中台框架后端项目 Admin.Core 的介绍与配置说明
中台admin是前后端分离权限管理系统,Admin.Core为后端项目,基于.NET 7.0开发。 支持多租户、数据权限、动态 Api、任务调度、OSS 文件上传、滑块拼图验证、多数据库,分布式缓存、分布式事务等
- 项目地址
- Github https://github.com/zhontai/Admin.Core
- 技术栈
- dotnet7
- FreeSql
- Autofac
- CAP
- Mapster
- 特点
- 快速启动,上手简单
- 系统模块化
- Swagger的模块化封装
- 读写分离
- 分库分表
- 分布式事务 TCC/ SAGA
- 动态API
- 系统权限封装基本满足大部分项目
- 多租户实现
- 开发环境
- Vs2022
- dotnet7
- 项目结构
- hosts
ZhonTai.Host
:默认启动项目,添加对 ZhonTai.Admin.Dev,模块的引用,并将程序集配置到 assemblyNames
- platform
ZhonTai.Admin
核心服务ZhonTai.ApiUI
接口文档封装,分模块加载zhonTai.Common
通用库封装ZhonTai.DynamicApi
动态WebApi库ZhonTai.Admin.Dev
代码生成器添加
- tests
ZhonTai.Tests
测试库
- modules
- XX.XX 我准备放自己的模块
- hosts
框架的使用
1. 从GitHub 克隆/下载项目
- 后端:
git clone https://github.com/zhontai/Admin.Core.git
- 前端:
git clone https://github.com/zhontai/admin.ui.plus.git
2. 后端项目的启动
使用新下的VS2022打开后,默认启动项目 ZhonTai.Host ,直接Ctrl F5运行即可 系统将会根据实体生成数据库及表,并根据 Configs/dbconfig.json 配置将 initData/*.json 的数据生成到本地Sqlite中 (ps:第一次搞dotnet7的项目,vs2019 自己下SDK折腾半天搞不了一点,需要vs2022 17.4 )
- 官方文档:https://zhontai.net/backend/new-project.html
3. 配置文件说明
- launchSettings.json
- 默认本地启动配置
- 配置项
- 运行环境
- ASPNETCORE_ENVIRONMENT:Development
- 启动端口
- 默认:8000
- 优先级低于appconfig.urls的配置
- 运行环境
- 配置项
- 默认本地启动配置
- appsettings.{Env}.json
- 默认的应用配置文件
- 配置项
- 日志等级
- 默认:Information
- 跨域
- 默认:*
- CAP配置
- 默认:未启用
- 滑动验证码
- 默认:300s有效期
- 是否开启在appconfig.json配置varifyCode.enable
- 日志等级
- Configs*.{Env}.json
- 自定义的应用配置文件
- dbconfig.json
- 数据库配置
- 绑定模型
- 单例:
DbConfig
- 单例:
- 配置项
- 支持类型:type
- 默认:Sqlite MySql = 0, SqlServer = 1, PostgreSQL = 2,Oracle = 3, Sqlite = 4, OdbcOracle = 5,OdbcSqlServer = 6, OdbcMySql = 7,OdbcPostgreSQL = 8, Odbc = 9, OdbcDameng =10, MsAccess = 11, Dameng = 12,OdbcKingbaseES = 13, ShenTong = 14,KingbaseES = 15, Firebird = 16
- 连接字符串:connectionString
- 默认:admindb.db
- 同步结构
- syncStructure:true
- 默认启用
- 分布式部署需要注意关闭
- 监听同步结构脚本 syncStructureSql:false
将会输出codeFirst执行的脚本 将 assemblyNames 配置的所有实体执行结构移
db.CodeFirst.SyncStructure
1.创建临时表 2.插入历史数据,修改字段名称情况注意 3.删除旧表,重命名临时表为新表 生产上该自己执行脚本的还是自己执行 - 同步数据
- syncData:true
- sysUpdateData:false
- 同步更新数据
- 确定要修改表数据是最新数据再开启,除localdb测试就不要使用
- syncDataIncludeTables:[]
- 同步数据包含表,指定表同步,不填同步所有表
- syncDataExcludeTables:[]
- 同步数据排除表,指定表不同步
- syncDataUser
- 同步数据操作用户
- syncDataPath
- 不配置默认为 项目目录/InitData/Admin
- 默认会将文件夹下的所有 表名.json 添加到数库中,默认新增所有数据
- 如果是租户数据,格式为 表.tenant.json
- syncDataCurd:false
- 监听同步数据Curd操作
设置是否将syncDataPath文件夹下的 表名.json 加/修改到数据库中
- 生成数据
- generateData:true 默认开启但无效,需要将禁用创建数据库及禁用步:createDb:false && syncData:false
- 加了视图菜单就可以使用这个功能来创建生成默认数据
- 支持类型:type
- cacheconfig.json
- 缓存配置,未绑定模型,redis缓存,限流参数配置
- 配置项
- 支持类型
- 默认:Memory
- Memory = 0,Redis = 1
- 限流缓存类型
- 默认:Memory
- Memory = 0,Redis = 1
- Redis配置
- 127.0.0.1:6379
- 支持类型
- appconfig.json
- 应用配置
- 绑定模型
- 单例:
AppConfig
- 单例:
- 配置项
- appType 应用程序类型
- 默认:Controllers
- Controllers ControllersWithViews MVC
- urls 启动地址
- http://*:8000
- corUrls 跨域
- []
- assemblyNames 程序集名称
- ZhonTai.Admin
- Mapster自动注册程序集
- tenantc租户
- true
- distributeKey 分布式事务唯一标识
- 为空则不生成分布式事务表
- validate 验证开关
- 登录,接口权限,数据权限验证
- swagger Swagger文档s
- http://localhost:8000/admin/swagger
- apiUI 接口文档地址
- http://localhost:8000/admin/index.html
- MiniProfiler 性能分析器
- false
- identityServer 统一认证授权服务器
- false
- aop 面向切面编程s
- 开启事务
- log 数据库日志
- 操作日志
- rateLimit 限流开关
- false
- varifyCode 登录验证码
- true
- defaultPassword 默认密码
- 111111
- dynamicApi 动态api
- 结果格式化
- passwordHasher 标准标识密码哈希
- 启用后相同密码加密后各不相同
- maxRequestBodySize 最大请求大小
- 104857600
- healthChecks 健康检查
- enable:true 启用
- path:/admin/health
- appType 应用程序类型
- jwtconfig.json
- JWT配置
- 绑定模型
- 单例:
JwtConfig
- 单例:
- 配置项
- issuer 发行者
- audience 订阅者
- securityKey 密钥
- expires 有效期(分钟) 120
- refreshExpires 刷新有效期(分钟) 1440
- ossconfig.json
- 本地上传配置
- 绑定模型
IOptions<OSSConfig>
- OSS配置
- Minio
- 阿里云
- 腾讯云
- 七牛
- 华为云
- uploadconfig.json
- 上传配置
- 绑定模型
IOptions<UploadConfig>
- ratelimitconfig.json
- 限流配置
- 绑定模型
IOptions
- 支持类型
- IP限流
- 默认未启用
- 需要在appconfig.json中配置rateLimit:true生效
- 使用Redis实现限流
- 需要在cacheconfig.json中配置typeRateLimit
- IP限流
- InitData模块*.{tenant}.json
- 默认初始化数据
写在最后
文章的起因是想找个不错的框架用来搞个自己用的系统,找了几个dotnet vue的框架,zhontai的这个是看到上手最容易,前后台的代码也没有封装得太深,二开也很方便,看着用着都挺舒服的。 唯一的不足就是文档了,一点资料都找不到,就只能一点点看代码,然后边看边记录,以备后用,又想着既然都写了,那就再整理一下了,顺便分享出来咯,希望能够对后面使用框架的有所帮助。