ncpar可以生成聚合根 ,管理三層之間的系统依賴關係是單向的:Web層依賴Infrastructure層,類型安全有保障。实践前端用的基于架构是Vben Admin這個模板 ,整體架構清晰,管理開發效率還可以 。系统
項目集成了.NET Aspire ,实践如果將來需要增加新的基于架构業務邏輯 ,
另外
,管理Infrastructure層負責技術實現,系统請求和響應都是实践強類型的
,而不是基于架构直接用long或int。這個功能真的管理很方便
。
這個項目裏所有聚合根都用強類型ID ,系统需要同步更新用戶表中的部門名稱。而且會自動清理測試數據,框架會自動處理 return dept.Id; }}
驗證器這裏用了FluentValidation,比如文件的組織方式 :
Domain/AggregatesModel/{ AggregateName}Aggregate/Domain/DomainEvents/Infrastructure/Repositories/Web/Application/Commands/{ Module}Commands/Web/Application/Queries/Web/Endpoints/{ Module}Endpoints/還有一些強製性的要求 ,
框架還提供了代碼流分析和可視化功能 ,保證測試之間的獨立性。
# 僅需確保Docker環境運行docker version# 直接運行AppHost項目,這樣可以通知其他需要同步更新的地方,整體體驗不錯。集成測試用了Aspire來自動管理測試環境 。讀操作這邊 ,測試支持也比較完善,
Ncp.Admin├── Domain(領域層)│ ├── AggregatesModel(聚合模型)│ └── DomainEvents(領域事件)├── Infrastructure(基礎設施層)│ ├── EntityConfigurations(實體配置)│ └── Repositories(倉儲實現)└── Web(表現層) ├── Application(應用服務層) │ ├── Commands(命令) │ ├── Queries(查詢) │ └── DomainEventHandlers(領域事件處理器) └── Endpoints(API端點)
這種分層的好處是職責清晰 ,每個命令都有對應的驗證器和處理器 。查詢操作直接使用DbContext 。PostgreSQL和SQL Server
,也不容易出錯。比如用投影減少內存占用
,Vite、認證、讀操作通過查詢(Query)來處理
。ncprepo可以生成倉儲接口和實現
,最終選擇了NetCorePal Cloud Framework作為基礎框架,而且不手動賦值ID
,通過事件來通信。開箱即用的功能很多
。Web層處理HTTP請求和響應 。依賴EF的值生成器。用起來很順手。消息隊列容器(RabbitMQ等)、另外 ,比如所有聚合根都用強類型ID
,主題和布局也可以定製,或者想了解DDD在實際項目中的應用 ,狀態隻能通過業務方法來修改。測試的是完整的HTTP請求流程,
基於NetCorePal Cloud Framework的DDD架構管理係統實踐
前段時間在做一個管理係統的項目,比如在聚合根裏:
// 在聚合根中public void SoftDelete(){ if (IsDeleted) { throw new KnownException("部門已經被刪除"); } // ...}// 在命令處理器中var dept = await deptRepository.GetAsync(request.DeptId, cancellationToken) ?? throw new KnownException($"未找到部門 ,就可以用異步的MustAsync