DDD架构模板:Ncp.CleanDDD
一个优雅的DDD架构模板:Ncp.CleanDDD
在现代软件开发中,领域驱动设计(DDD)越来越受到开发者的青睐,但搭建一个规范的DDD项目结构往往需要耗费大量时间。今天给大家推荐一个优秀的DDD架构模板——
Ncp.CleanDDD
,它基于.NET生态系统构建,提供了完整的领域驱动设计实现方案。项目概述
Ncp.CleanDDD是一个遵循DDD原则的项目模板,它整合了多个优秀的开源框架,为开发者提供了一套开箱即用的企业级应用开发方案。该模板不仅包含了后端服务架构,还提供了配套的前端管理系统,形成了一个完整的解决方案。
项目地址:https://github.com/zhouda1fu/Ncp.CleanDDD
技术栈亮点
后端技术栈
核心框架
:ASP.NET Core领域驱动设计支持
:基于NetCorePal Cloud Framework数据访问
:Entity Framework Core消息队列
:CAP(事件总线)命令查询分离
:MediatR验证
:FluentValidationAPI文档
:Swashbuckle.AspNetCore.Swagger
前端技术栈
框架
:Vue 3 + TypeScriptUI组件库
:Element Plus路由
:Vue Router状态管理
:PiniaHTTP客户端
:Axios构建工具
:Vite
项目结构
Ncp.CleanDDD采用严格的分层架构,遵循依赖倒置原则,各层之间保持清晰的边界:
Ncp.CleanDDD.sln ├── src/ │ ├── Ncp.CleanDDD.Domain/ # 领域层 - 聚合根、实体、领域事件 │ ├── Ncp.CleanDDD.Infrastructure/ # 基础设施层 - EF配置、仓储实现 │ └── Ncp.CleanDDD.Web/ # 表现层 - API、应用服务 └── test/ # 测试项目 ├── Ncp.CleanDDD.Domain.Tests/ ├── Ncp.CleanDDD.Infrastructure.Tests/ └── Ncp.CleanDDD.Web.Tests/
分层依赖关系严格遵循:Web → Infrastructure → Domain的单向依赖,确保领域层的纯粹性。
开发效率工具
代码片段
模板提供了丰富的代码片段,支持多种IDE,包括Visual Studio、VS Code和JetBrains Rider,能极大提高开发效率。常用的代码片段包括:
领域层
:聚合根(ncpar)、领域事件(ncpde)、仓储接口(ncprepo)应用层
:命令(ncpcmd)、命令(含返回值)(ncpcmdres)、集成事件(ncpie)表现层
:FastEndpoint相关片段(epp、epreq、epres等)
例如,使用epp
快捷键可以快速生成一个完整的垂直切片实现,包含请求、响应、验证器和处理器。
代码分析可视化
一个非常有特色的功能是代码分析可视化工具,它能自动分析代码结构并生成交互式图表:
# 安装全局工具 dotnet tool install -g NetCorePal.Extensions.CodeAnalysis.Tools # 生成可视化文件 cd src/Ncp.CleanDDD.Web netcorepal-codeanalysis generate --output architecture.html
生成的HTML页面包含多种图表类型,如架构流程图、命令链路图、事件流程图等,支持在线编辑和导出,帮助团队更好地理解系统结构。
快速开始
环境准备
项目依赖MySQL、RabbitMQ和Redis,可通过Docker快速部署:
# 启动MySQL docker run --restart always --name mysql -v /mnt/d/docker/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d mysql:latest # 启动RabbitMQ docker run --restart always -d --hostname node1 --name rabbitmq -p 15672:15672 -p 5672:5672 rabbitmq:3-management # 启动Redis docker run --restart always --name redis -v /mnt/d/docker/redis:/data -p 6379:6379 -d redis:5.0.7 redis-server
数据库迁移
使用EF Core的迁移工具管理数据库 schema:
# 安装EF工具 dotnet tool install --global dotnet-ef --version 9.0.0 # 创建迁移 dotnet ef migrations add InitialCreate -p src/Ncp.CleanDDD.Infrastructure # 更新数据库 dotnet ef database update -p src/Ncp.CleanDDD.Infrastructure
前端启动
前端项目基于Vue 3构建,启动步骤:
# 进入前端目录 cd frontend # 安装依赖 npm install # 启动开发服务器 npm run dev
最佳实践
Ncp.CleanDDD内置了大量最佳实践,包括:
领域事件与集成事件分离
:清晰区分领域内事件和跨服务事件命令查询职责分离(CQRS)
:通过MediatR实现命令和查询的分离处理仓储模式
:抽象数据访问层,隔离领域层与数据访问细节严格的单元测试规范
:遵循AAA模式(Arrange、Act、Assert),确保领域逻辑正确性API端点设计
:使用FastEndpoints替代传统MVC Controller,提供更好的性能
监控集成
项目集成了prometheus-net,默认通过/metrics
地址输出监控指标,方便与Prometheus等监控系统集成,实现对系统运行状态的实时监控。
总结
Ncp.CleanDDD为开发者提供了一个规范、高效的DDD项目模板,它不仅包含了完整的架构设计,还提供了丰富的工具和最佳实践,能帮助团队快速上手领域驱动设计,减少重复工作,专注于业务逻辑的实现。
无论是新启动的企业级应用,还是现有项目的架构重构,Ncp.CleanDDD都是一个值得考虑的优秀选择。
如果你对DDD感兴趣,或者正在寻找一个成熟的.NET项目模板,不妨访问项目地址https://github.com/zhouda1fu/Ncp.CleanDDD,相信它会给你带来惊喜!
评论