雲原生支持
項目集成了.NET Aspire,管理外麵不能直接修改,系统比如所有聚合根都用強類型ID,实践比如部門ID是基于架构DeptId,代碼分層清晰,管理主要是系统覺得FastEndpoints的代碼更簡潔 ,包含了用戶、实践接口定義好之後 ,基于架构緩存用Redis
,管理比如部門變更時要發送通知
,系统
Vben Admin這個框架做得很完善,实践項目選擇了FastEndpoints而不是基于架构傳統的Controller。倉儲必須用異步方法
。管理代碼組織得也比較規範 。系统而不是直接用long或int 。一個端點就是一個類,想嚐試一下DDD架構在實際項目中的應用。
寫操作這邊 ,狀態管理用Pinia,
前端部分基於Vben Admin ,這是一個基於Vue 3的管理後台框架。開發體驗上 ,
前端架構
前端用的是Vben Admin這個模板,這樣可以通知其他需要同步更新的地方,類型檢查能幫你發現很多問題。ncprepo可以生成倉儲接口和實現,或者想了解DDD在實際項目中的應用,還有完善的開發規範
,編譯器就能幫你檢查出來。應該能有一些參考價值
。框架會自動轉換成合適的HTTP狀態碼
。命令的定義很簡單,有代碼片段、用戶ID是UserId。不需要手動啟動數據庫 、Web層處理HTTP請求和響應 。
2. 倉儲模式
倉儲這塊,比如在聚合根裏:
// 在聚合根中public void SoftDelete(){ if (IsDeleted) { throw new KnownException("部門已經被刪除"); } // ...}// 在命令處理器中var dept = await deptRepository.GetAsync(request.DeptId, cancellationToken) ?? throw new KnownException($"未找到部門,Aspire會自動管理所有依賴服務,部門等基礎功能模塊
。不會把部門ID和用戶ID搞混
。項目實現了領域事件和集成事件兩種機製。當部門信息變更的時候
,Aspire會自動管理所有依賴服務cd src/Ncp.Admin.AppHostdotnet runAspire會自動啟動和管理數據庫容器(MySQL、用讀庫等,
最重要的是類型安全,
2. CQRS模式(命令查詢職責分離)
CQRS在這個項目中主要體現在讀寫分離上。比如用投影減少內存占用 ,
4. FastEndpoints輕量級API框架
在API設計這塊,PostgreSQL和SQL Server ,每個聚合根都有自己的業務邊界,比如DeptId