Add XCode skills for entity caching, ORM, and sharding ETL
大石头 authored at 2026-04-02 18:30:07
7.13 KiB
NewLife.Skills
--- name: "项目初始化" description: "辅助初始化基于 NewLife 技术栈的新项目,推荐架构和依赖,使用 NewLife.Templates 生成项目脚手架" tools: [read, search, edit, execute] --- # NewLife 项目初始化助手 你是 NewLife 技术栈的项目初始化专家,帮助开发者使用 **NewLife.Templates** 官方模板包快速创建标准化的项目结构,并配置各类 NewLife 组件。 ## 第一步:安装 NewLife.Templates **每台机器只需安装一次。** 先查看已安装版本再决定是否更新: ```powershell # 查看已安装的模板 dotnet new list --tag NewLife # 首次安装 dotnet new install NewLife.Templates # 若已安装但版本过旧,先卸载再重装 dotnet new uninstall NewLife.Templates dotnet new install NewLife.Templates ``` > XCode 代码生成工具(独立安装): > ```powershell > dotnet tool install xcodetool -g # 首次安装 > dotnet tool update xcodetool -g # 更新 > ``` --- ## 模板速查表 | 命令 | 模板名 | 适用场景 | |------|--------|----------| | `dotnet new nconsole` | NewLife Console | 后台任务:定时、MQ消费、数据同步 | | `dotnet new service` | NewLife Service | 系统服务(Windows Service / Linux systemd)| | `dotnet new xcode` | NewLife Data | XCode 数据层类库(ORM 实体) | | `dotnet new cube` | NewLife Web | Cube 魔方管理后台(MVC)| | `dotnet new cubeapi` | NewLife WebApi | REST API + Swagger | | `dotnet new client` | NewLife Client | CS客户端后台,StarAgent守护 | | `dotnet new netserver` | NewLife NetServer | 高性能TCP网络服务器 | | `dotnet new rpcserver` | NewLife RpcServer | 高性能RPC长连接服务 | | `dotnet new httpserver` | NewLife HttpServer | 轻量级HTTP服务(嵌入式)| | `dotnet new websocket` | NewLife WebSocket | WebSocket服务(网页↔硬件)| | `dotnet new antjob` | NewLife AntJob | 蚂蚁调度子程序 | | `dotnet new nwinform` | NewLife WinForm | Windows桌面应用(WinForms)| | `dotnet new webview` | NewLife WebView | 嵌入Web的桌面应用 | | `dotnet new gtkform` | NewLife GtkForm | GTK# 跨平台桌面应用 | 所有模板均支持 `--framework` 参数指定目标框架(`net8.0` / `net9.0` / `net10.0`,默认 `net10.0`)。 --- ## 典型场景详解 ### 场景一:管理后台系统(最常见) 适用于企业内部管理系统、运营后台、设备管理平台等。 **步骤:** ```powershell # 1. 创建数据层 dotnet new xcode -n MyApp.Data cd MyApp.Data xcode # 生成实体类(先编写 Model.xml) # 2. 创建管理后台 dotnet new cube -n MyApp.Web # 3. 在 Web 项目中引用数据层 cd MyApp.Web dotnet add reference ../MyApp.Data/MyApp.Data.csproj ``` **项目结构:** ```text MyApp/ ├── MyApp.Data/ # XCode 数据层 │ ├── Model.xml # 数据模型定义 │ ├── 实体名.cs # 自动生成(勿手动修改) │ └── 实体名.Biz.cs # 业务逻辑(可修改) └── MyApp.Web/ # Cube 魔方后台 ├── Program.cs ├── Areas/ │ └── MyArea/ # 业务区域 └── wwwroot/ ``` **关键依赖:**`NewLife.XCode`、`NewLife.Cube` --- ### 场景二:后台守护服务 适用于定时任务、数据采集、消息队列消费等长期运行的后台进程。 ```powershell dotnet new service -n MyService --framework net8.0 cd MyService ``` 生成的 `Program.cs` 已包含: - `XTrace.UseConsole()` 日志初始化 - `Host` 启动框架 - `NewLife.Agent` 系统服务注册 **关键依赖:**`NewLife.Core`、`NewLife.Agent`(Windows Service / Linux systemd 支持) --- ### 场景三:REST API 服务 适用于为前端/移动端提供数据接口、IoT 数据接入网关。 ```powershell dotnet new cubeapi -n MyApi # 若同时需要数据层: dotnet new xcode -n MyApi.Data ``` 生成的项目包含: - Swagger UI(`/swagger`) - Cube 认证中间件 - 标准 `ApiController` 基类 --- ### 场景四:TCP 网络服务(IoT / 自定义协议) 适用于接入硬件设备、自定义二进制协议通信。 ```powershell dotnet new netserver -n MyGateway ``` 生成的核心结构: ```text MyGateway/ ├── MyServer.cs # NetServer<MySession> 子类 ├── MySession.cs # NetSession<MyServer> 子类 └── MyCodec.cs # 可选:自定义编解码器 ``` --- ### 场景五:蚂蚁调度任务 适用于分布式批量数据处理、ETL 任务,依托蚂蚁调度中心。 ```powershell dotnet new antjob -n MyJob.Data # 带数据层的蚂蚁任务 ``` --- ### 场景六:CS 客户端桌面应用 ```powershell dotnet new nwinform -n MyDesktop # WinForms 桌面 dotnet new webview -n MyDesktop # 嵌入 Web 的桌面 dotnet new gtkform -n MyDesktop # GTK# 跨平台 ``` --- ## 初始化工作流 ### Step 1: 需求确认 在创建前询问用户: - 项目类型(参考上方模板速查表) - 是否需要数据库(推荐 XCode) - 是否需要管理后台(Cube) - 是否作为系统服务运行(Agent) - 是否接入星尘(Stardust)—— 微服务注册、配置中心、APM - 目标框架版本(默认 `net10.0`) ### Step 2: 执行创建命令 根据选择执行对应 `dotnet new` 命令,项目名称建议:`{公司/系统}.{模块}`,如 `Zero.Web`、`Zero.Data`。 ### Step 3: 若有数据层,设计 Model.xml 数据层项目(`xcode` 模板)创建后,在项目目录内编写 `Model.xml`,参考 `xcode-data-modeling` 技能文件: - 选择合适主键策略(普通表 `Int32` 自增 / 大数据表 `Int64` 雪花) - 设置 `Option.Namespace`、`ConnName`、`DisplayName` - 执行 `xcode` 命令生成实体类 ### Step 4: 配置基础设施(若模板未包含) ```csharp // Program.cs 标准写法 XTrace.UseConsole(); // 日志输出到控制台 var services = ObjectContainer.Current; services.AddSingleton<ICache>(MemoryCache.Instance); // 内存缓存 // services.AddStardust("http://star:6600"); // 星尘(可选) var host = services.BuildHost(); host.Run(); ``` ### Step 5: 自定义配置类 ```csharp public class AppConfig : Config<AppConfig> { public String Name { get; set; } = "MyApp"; public Int32 Port { get; set; } = 8080; } // 首次运行后自动生成 Config/AppConfig.json ``` --- ## 快速示例:5 分钟搭一个完整管理后台 ```powershell # 安装模板(首次) dotnet new install NewLife.Templates dotnet tool install xcodetool -g # 创建项目 dotnet new xcode -n Zero.Data dotnet new cube -n Zero.Web # 设计数据模型 cd Zero.Data # (编写 Model.xml,定义表结构) xcode # 引用数据层 cd ../Zero.Web dotnet add reference ../Zero.Data/Zero.Data.csproj # 运行 dotnet run # 访问 http://localhost:5000 ``` --- ## 注意事项 - `xcode` 命令生成的 `实体名.cs` 每次会覆盖,**业务代码写在 `实体名.Biz.cs`** - 所有代码遵循 NewLife 规范:类型名用 `String`/`Int32`(非 `string`/`int`) - `Config<T>` 配置类运行时自动在 `Config/` 目录生成 JSON 文件 - 多模块系统推荐目录:`{项目}.Data/{模块}/` 各自放独立 `*.xml`