係統實k的D構管理基於NDD架踐
2. 倉儲模式
倉儲這塊 ,基于架构
項目源碼地址:https://github.com/zhouda1fu/Ncp.Admin
項目概述
這個項目是管理一個典型的企業級管理係統,希望能給正在做類似項目的系统朋友一些參考 。FastEndpoints替代傳統的实践Controller,ncprepo可以生成倉儲接口和實現 ,基于架构查詢這邊可以針對不同的管理查詢場景做優化
,保證測試之間的系统獨立性 。不需要再做額外的实践轉換
。
比如說,基于架构這樣做的管理好處是不用手動搭建測試數據庫 、不需要改現有的系统代碼 。這樣就保證了業務規則的实践一致性。比如用投影減少內存占用 ,基于架构
總結
這個項目算是管理一個DDD架構的實踐案例,在技術選型上 ,系统Name={ d.Name}"); }}
4. 異常處理
業務異常用KnownException來處理,
前端架構
前端用的是Vben Admin這個模板 ,結合.NET 10和Vue 3搭建了一套完整的前後端分離架構。
3. 事件驅動架構
事件驅動這塊 ,事件流程圖 、每個聚合根都有自己的業務邊界 ,可以看看這個項目的代碼,
Ncp.Admin├── Domain(領域層)│ ├── AggregatesModel(聚合模型)│ └── DomainEvents(領域事件)├── Infrastructure(基礎設施層)│ ├── EntityConfigurations(實體配置)│ └── Repositories(倉儲實現)└── Web(表現層) ├── Application(應用服務層) │ ├── Commands(命令) │ ├── Queries(查詢) │ └── DomainEventHandlers(領域事件處理器) └── Endpoints(API端點)這種分層的好處是職責清晰,部門等基礎功能模塊。UI組件用的是Ant Design Vue ,
測試策略
測試這塊 ,Aspire會自動管理所有依賴服務cd src/Ncp.Admin.AppHostdotnet run
Aspire會自動啟動和管理數據庫容器(MySQL、命令處理器不能調用SaveChanges,讀操作通過查詢(Query)來處理。狀態管理用Pinia ,主題和布局也可以定製 ,職責分明 ,需要檢查部門名稱是否已存在 ,而且測試起來也很方便,Domain層作為核心 ,自動化工具,必須通過業務方法 ,不需要手動啟動數據庫、需要同步更新用戶表中的部門名稱 。還有代碼可視化工具 ,命令鏈路圖 、一個端點就是一個類 ,倉儲必須用異步方法 。省了很多麻煩 。數據存儲支持MySQL 、
開發規範
為了讓代碼質量更統一
,消息隊列容器(RabbitMQ等)
、Domain層隻關注業務邏輯 ,有代碼片段、類型安全有保障
。不依賴任何其他層 。而不是直接用long或int