1、开发和管理.NET软件架构模板 骆姜斌(Jerry Luo)微软最有价值专家(MVP)FireUG技术社区组织者主要内容 创造标准:如何创建.NET项目架构模板 提升效率:如何打造CLI工具 持续演进:如何管理模板问题场景 每次启动新项目,都是Ctrl+C,Ctrl+V一个旧项目,然后花半天时间删改无关代码 不同成员创建的项目结构各异,跨项目后期维护成本高 不同成员创建的项目结构各异,跨项目后期维护成本高一、奠基:设计和创建.NET项目架构模板什么是好的架构模板?内置分层架构 三层架构(Three-Tier Architecture)清洁架构(Clean Architecture)领域驱动(D
2、DD)架构(Domain-Driven Design Architecture)垂直切片架构(Vertical Slice Architecture)没有最好的架构,只有最适合的架构什么是好的架构模板?最佳实践集成 认证和授权、日志、异常处理、文档、健康检查等 通用方法 Demo 开箱即用最小配置即可运行模板创建步骤 创建一个“模范”项目,并精心打磨其结构和代码 创建并配置 模板配置文件(template.json)打包和发布 安装和使用SSW.CleanArchitecture 示例https:/ 示例模板配置文件模板打包 dotnet pack 创建模板项目文件(.csproj)dotne
3、t pack-c Release-no-build dotnet nuget push-s -k 模板打包 nuget pack 创建.nuspec文件 nuget pack nuget push -Source -ApiKey模板打包 nuget pack 创建.nuspec文件 nuget pack nuget push -Source -ApiKey 模板安装模板使用 安装模板使用 创建项目dotnet new ssw-ca-name NETConf2025.Demo模板使用 创建项目二、提效:构建CLI命令工具,实现开发效率提升.NET CLI VS 自定义CLI.NET CLI Qu
4、eryHandler 对比.NET CLI 模板实现.NET CLI 创建文件.NET CLI 创建文件自定义CLI 场景场景一:根据模板创建新项目 调用 dotnet new 生成基础项目。连接到团队的内部NuGet源,自动恢复并添加必要的内部依赖包。最后执行 dotnet build 和 dotnet test,确保项目生成成功。场景二:生成业务实体及完整CRUD接口 解析命令参数和实体属性定义 生成领域层组件 生成基础设施层组件 生成应用层组件 控制器层组件自定义CLI 核心特征 专用性 为解决特定问题而生 封装复杂性 通过简单命令,完成一系列操作 团队规范 强制性自动执行规则自定义CL
5、I 框架 C#System.CommandLine NodeJS commander.js(https:/ cobra(https:/ 开发自定义CLI 开发自定义CLI 开发自定义CLI 开发自定义CLI 开发自定义CLI 打包和发布 dotnet pack-c Release-no-build dotnet nuget push-s -k 自定义CLI 使用自定义CLI 使用三、演进:像管理产品一样,持续迭代和管理模板版本管理 为什么?可追溯性 项目是基于哪个版本的模板创建的 可复现性 能够回退到历史版本 依赖管理 明确的版本号是依赖管理的基础。版本管理 怎么做?独立代码库 语义化版本号
6、主版本.次版本.修订版本,例如:v2.1.0 主版本:不兼容的API修改 次版本:向下兼容的功能性新增 修订版本:向下兼容的问题修正 发布管理 CI/CD Git Tags标记版本管理 怎么做?独立代码库 语义化版本号 主版本.次版本.修订版本,例如:v2.1.0 主版本:不兼容的API修改 次版本:向下兼容的功能性新增 修订版本:向下兼容的问题修正 发布管理 CI/CD Git Tags标记分支策略 main 分支 dev 分支 功能分支 修复分支分支策略 案例 新需求(“