作为个人.NET 开发技术的积累、实践合集,基于.NET 8实现基础的项目架构,为后期个人项目快速开发提供基座,开箱即用; 遵循CleanArchitecture设计理念(Ctrl C + V)
-
将调整后的项目文件(解决方案下的文件,排除
.git、.github、.vs、template等非项目文件或文件夹)全部拷贝到template\Content文件夹中。如需调整模板信息,可自行编辑template\Content\.template.config\template.json文件 -
执行
Delete bin&obj Folder.bat文件。此操作意欲删除项目产生的所有bin、obj等文件夹 -
执行
template\PackTplNuget.bat脚本,产出.nupkg文件,默认为CoreMeTemplate.x.x.x.nupkg。如需调整生成的nupkg文件信息,可自行编辑template\coreme.nuspec文件 -
此时已完成新模板构建
-
将
template文件夹下的.nupkg文件拷贝到cripts\.template中,并根据.nupkg文件名调整CreateNewProject.bat文件内容。替换掉该段脚本的nupkg文件名:dotnet new -i .template\CoreMeTemplate.2.0.0.nupkg -
执行
CreateNewProject.bat脚本,并根据提示填入信息 -
成功后
cripts目录下会产出.project文件夹,文件夹内即为根据模板新建的项目
- 个人博客系统 Memo.Blog
- 系统日志写入/查询;
- 用户、访客管理;
- 角色、权限管理;
src
├─CoreMe.Application -- 应用服务模块
│ ├─Users -- 服务名称(具体服务实现,例如:文章管理、权限管理等)
│ │ ├─Commands -- 增删改命令操作(对数据造成变更的处理)
│ │ ├─Common -- 当前服务公有实体,例如:响应、请求
│ │ ├─Events -- 事件触发EventHandler
│ │ └─Queries -- 查询操作(对数据进行读取)
│ │ ├─Anlyanis -- 统计分析数据
│ │ ├─Get -- 获取详情
│ │ ├─List -- 获取列表
│ │ └─Page -- 获取分页
│ └─Common -- 服务公有模块
│ ├─Behaviours -- MediatR管道切面行为(AOP)
│ ├─Exceptions -- 自定义异常
│ ├─Extensions -- 扩展方法
│ ├─Interfaces -- 接口定义
│ │ ├─Persistence -- 数据相关定义
│ │ │ └─Repositories -- 仓储定义(基础仓储定义)等
│ │ ├─Security -- 安全相关接口定义
│ │ └─Services -- 服务接口定义
│ ├─Mappings -- Mapster实体映射IRegister
│ ├─Models -- 公共模型定义,例如:配置、响应、请求等基础实体
│ ├─Request -- 进程内通信基础定义
│ ├─Security -- 安全相关的实体定义
│ ├─Services -- 服务实现,例如后台任务服务
│ └─Utils -- 工具类
├─CoreMe.Domain -- 服务领域模块
│ ├─Common -- 公共实体定义
│ ├─Constants -- 常量定义
│ ├─Entities -- 数据库实体定义
│ │ └─Mongo -- MongoDB实体定义
│ ├─Enums -- 枚举定义
│ ├─Events -- 事件定义
│ └─ValueObjects -- 值对象定义
├─CoreMe.Infrastructure -- 基础设施模块
│ ├─Persistence -- 数据持久化实现
│ │ └─Repositories -- 数据库仓储实现
│ ├─Region -- ip2region进一步封装实现
│ └─Security -- 安全相关实现,例如JWT、当前用户、权限验证
└─CoreMe.Api -- 外放接口模块
├─Controllers -- 客户端接口定义
│ └─Admin -- 管理端接口定于
└─wwwroot -- 静态文件
└─Assets -- 资源文件| 模块 | 开源地址 |
|---|---|
| API文档 | RicoSuter/NSwag |
| 数据库 | dotnetcore/FreeSql + MySQL + MongoDB + MongoDB C# Driver |
| 对象存储 | 七牛云 + qiniu/csharp-sdk |
| 缓存 | Redis + dotnetcore/EasyCaching |
| 进程内通信 | jbogard/MediatR |
| 身份认证 | Authentication(内置) + jwt |
| 参数验证 | FluentValidation/FluentValidation |
| 日志 | serilog/serilog |
| 限流 | stefanprodan/AspNetCoreRateLimit |
| IP解析 | lionsoul2014/ip2region |
| 雪花ID | yitter/idgenerator |
| 对象映射 | MapsterMapper/Mapster |
| Json序列化/反序列化 | System.Text.Json(内置) |
| 后台任务调度 | BackgroundService(内置) |
| 实时通信 | SignalR/SignalR |
| 整体设计参考 | CleanArchitecture |
| 容器 | Docker |
| DevOps | Azure |
在此,感谢各位大佬的开源
MIT License. See License here for details.