
简体中文
ZhonTai.Template.App 模板用于快速创建基于 .NET 的后端接口项目,支持多模块分布式架构和单体应用两种开发模式。通过该模板,你可以一键生成结构清晰、配置规范的服务端项目,并内置了身份认证、权限控制、数据过滤、远程调用(gRPC/HTTP)等基础能力。
通过模板创建的项目,其框架核心功能(权限、日志、数据过滤、远程调用等)均引用自平台统一维护的 NuGet 包,而非直接内嵌源码。当平台发布新功能或修复后,你只需在项目中更新对应的 NuGet 包版本,即可获得最新能力,无需重新生成项目或手动合并代码,真正做到“一次生成,持续升级”。
模板提供三种项目类型来匹配不同的职责边界:
| 类型 | 角色定位 | 何时使用 |
|---|---|---|
平台端 sys | 系统核心与权限管理中心 | 需要统一管理用户、角色、权限、日志时,作为整个系统的基座优先创建 |
业务端 app | 专注具体业务处理的模块 | 当业务复杂需拆分为多个独立服务(如订单、商品、CMS),且依赖平台端的权限与用户信息时 |
用户端 mem | 面向终端用户/会员的接口 | 开发移动端、Web前端等C端应用时,需登录与数据隔离,但不涉及后台功能权限管理 |
核心应用场景举例
--merge-db),在一个项目中完成全部功能,适合中小型项目快速交付。下面将从安装模板开始,详细说明各类型项目的创建方法与最佳实践。
dotnet new install ZhonTai.Template.App升级模板命令和安装模板命令相同
注意
如果已安装ZhonTai.Template模板,需要先卸载ZhonTai.Template旧模板再安装ZhonTai.Template.App新模板,避免模板短名称MyApp冲突
dotnet new uninstall ZhonTai.Templatedotnet new install ZhonTai.Template.App::10.1.0dotnet new MyApp -h-at, --app-type <app|mem|sys>
根据项目需求选择不同的类别
类型: choice
sys 包含Admin权限管理接口,适用于系统拓展或单体项目开发,具备登录、数据权限和功能权限限制。
app 不含Admin权限管理接口,需要Grpc和Http远程通讯,适用于业务模块项目开发,具备登录、数据权限和功能权限限制。
mem 不含Admin权限管理接口,适用于用户端或会员端开发,不依赖Admin接口,需要Grpc和Http远程通讯,
具备登录、数据权限限制,无功能权限限制。
默认: app
-ac, --app-code <app-code>
可选,不填默认使用app-type项目类别选项
用于在项目中唯一标识不同的功能模块,以便于管理和区分模块项目,如 sys | biz | mem。
类型: string
-p, --port <port>
设置接口项目启动时所监听的端口号,如 18010 | 18020 | 18030。
必需: true
类型: int
-gp, --grpc-port <grpc-port>
配置GRPC远程通讯所使用的端口号,建议设置为Http端口号加1,如 18011 | 18021 | 18031。
必需: true
类型: int
-sk, --security-key <security-key>
可选,不填默认使用Guid生成
设置jwtconfig.securityKey的值,用于JWT令牌的安全验证,确保接口调用的安全性。
启用条件: AppType == sys
类型: string
-db, --db-type <MySql|PostgreSQL|...>
根据项目需求选择合适的数据库类型,支持国内外主流数据库。
类型: choice
MySql MySql
PostgreSQL PostgreSQL
SqlServer SqlServer
Oracle Oracle
Sqlite Sqlite
Firebird Firebird
MsAccess MsAccess
Dameng 达梦数据库,提供稳定可靠的数据存储和查询服务。
ShenTong 神通数据库,具备高性能和可扩展性,满足复杂业务需求。
KingbaseES 人大金仓数据库,提供全面的数据管理和安全保护。
Gbase 南大通用数据库,支持大规模数据处理和分析。
ClickHouse ClickHouse
QuestDb QuestDb
Xugu 虚谷数据库,提供灵活的数据存储和高效的查询性能。
默认: Sqlite
-nau, --no-apiui
选择此项将不使用新版接口文档功能,减少不必要的资源占用。
类型: bool
默认: false
-nts, --no-task-scheduler
选择此项将不集成任务调度服务,适用于无需定时任务处理的项目。
类型: bool
默认: false
-nc, --no-cap
选择此项将不使用CAP分布式事务和事件总线功能,降低系统复杂性。
类型: bool
默认: false
-nt, --no-tests
选择此项将不会生成测试库,适用于无需进行自动化测试的项目。
类型: bool
默认: false
-ns, --no-sample
选择此项将不会生成默认的示例模块及其相关文件,适用于已熟悉开发流程并希望快速进入开发阶段的开发者。
类型: bool
默认: false
-md, --merge-db
选择此项将会将admindb数据库合并到appdb中,实现数据库资源的统一管理和维护,适用于单体项目开发。
类型: bool
默认: falsedotnet new listdotnet new uninstall ZhonTai.Template.App为什么需要平台端?
平台端是整个系统的“大脑”,负责统一管理用户、角色、菜单、权限、操作日志等后台基础功能。它对外提供 gRPC 服务,供业务端和用户端远程验证权限、获取用户信息。任何需要后台权限管理的系统都应该先创建平台端项目。
何时使用?
项目接口包含平台接口和 Admin 权限管理接口,dbconfig需配置sysdb(业务主库)、admindb(权限数据库)、logdb(日志库),提供数据权限、用户权限及操作日志 Grpc 服务接口。
dotnet new MyApp -n MyCompanyName.Module.MySys -at sys -ac sys -p 18010 -gp 18011dotnet new MyApp -n MyCompanyName.Module.MySys -at sys -p 16010 -gp 16011MySqldotnet new MyApp -n MyCompanyName.Module.MySys -at sys -ac sys -p 18010 -gp 18011 -db MySqldotnet new MyApp -n MyCompanyName.Module.MySys -at sys -ac sys -p 16010 -gp 16011 -db MySqladmindb合并到业务库appdb中,同时切换数据库为MySqldotnet new MyApp -n MyCompanyName.Module.MySys -at sys -ac sys -p 18010 -gp 18011 -md true -db MySqldotnet new MyApp -n MyCompanyName.Module.MySys -at sys -ac sys -p 16010 -gp 16011 -md true -db MySqldotnet new MyApp -n MyCompanyName.Module.MySys -at sys -ac sys -p 18010 -gp 18011 -nt true -ns true -db MySqldotnet new MyApp -n MyCompanyName.Module.MySys -at sys -ac sys -p 16010 -gp 16011 -nt true -ns true -db MySql温馨提示
平台端项目端口号默认范围:18010 - 18999,单体项目端口号默认范围:16010 - 16999
gp端口号默认范围:port + 1
为什么需要业务端?
当系统功能逐渐复杂时,所有代码堆在平台端会变得难以维护。业务端项目让你可以把具体业务模块(如订单、商品、报表)剥离成独立服务,它不包含 Admin 管理界面,但通过 gRPC 复用平台端的登录、权限与用户数据,保持数据隔离的同时又能安全协作。
何时使用?
下面将开始新建业务端项目
dotnet new MyApp -n MyCompanyName.Module.MyBiz -at app -ac biz -p 19010 -gp 19011MySqldotnet new MyApp -n MyCompanyName.Module.MyBiz -at app -ac biz -p 19010 -gp 19011 -db MySqldotnet new MyApp -n MyCompanyName.Module.MyBiz -at app -ac biz -p 19010 -gp 19011 -nt true -ns true -db MySql温馨提示
业务端项目端口号默认范围:19010 - 19999
gp端口号默认范围:port + 1
为什么需要用户端?
移动 App、微信小程序、官网等 C 端应用只需要用户注册登录和个人数据管理,不需要复杂的后台角色与菜单权限控制。用户端项目去掉了功能权限限制,聚焦于“用户身份认证 + 数据权限(用户只能操作自己的数据)”,提供轻量、安全的对外 API。
何时使用?
下面将开始新建用户端项目
dotnet new MyApp -n MyCompanyName.Module.MyMem -at mem -ac mem -p 20010 -gp 20011MySqldotnet new MyApp -n MyCompanyName.Module.MyMem -at mem -ac mem -p 20010 -gp 20011 -db MySqldotnet new MyApp -n MyCompanyName.Module.MyMem -at mem -ac mem -p 20010 -gp 20011 -nt true -ns true -db MySql温馨提示
会员端项目端口号默认范围:20010 - 20999
gp端口号默认范围:port + 1
温馨提示
使用源码项目记得更改ZhonTai.Admin.Host/ConfigCenter/jwtconfig.json 配置文件的 securityKey 密钥
{
"JwtConfig": {
//密钥,注意字符串长度不能低于 32 位
"securityKey": "33ce0d4b3a7b11ef8563526747b33ad4",
}
}