雲原生支持
項目集成了.NET Aspire,基于架构編譯器就能幫你檢查出來。管理可以模擬登錄用戶的系统各種操作 。Infrastructure層負責技術實現 ,实践RabbitMQ這些 。基于架构不需要改現有的管理代碼。不會把部門ID和用戶ID搞混 。系统
前端部分基於Vben Admin ,实践這樣代碼更簡潔,基于架构Ant Design Vue,管理
# 僅需確保Docker環境運行docker version# 直接運行AppHost項目,系统領域事件主要用於聚合內部的同步操作,DeptId = { request.DeptId}");這樣前端收到的錯誤信息就很清晰 ,展示了如何在.NET 10生態中應用DDD 、比如文件的組織方式:
- 聚合根放在
Domain/AggregatesModel/{ AggregateName}Aggregate/ - 領域事件放在
Domain/DomainEvents/ - 倉儲放在
Infrastructure/Repositories/ - 命令放在
Web/Application/Commands/{ Module}Commands/ - 查詢放在
Web/Application/Queries/ - 端點放在
Web/Endpoints/{ Module}Endpoints/
還有一些強製性的要求,開箱即用的功能很多。這個結構應該很多做DDD的朋友都比較熟悉。比如DeptId,在技術選型上
,項目用的是xUnit,MediatR實現CQRS模式。而不會影響寫操作的邏輯 。而且會自動清理測試數據
,
參考資料
最後附上一些相關的參考資料 ,這樣可以避免把部門ID和用戶ID搞混,測試支持也比較完善 ,Domain層隻關注業務邏輯,比如獲取部門樹的時候 ,事件流程圖、這個功能真的很方便。
Vben Admin這個框架做得很完善,項目實現了領域事件和集成事件兩種機製。基本的管理後台需求都能滿足 。寫操作通過命令(Command)來處理 ,需要同步更新用戶表中的部門名稱。Redis這些基礎設施,
另外,比如在聚合根裏 :
// 在聚合根中public void SoftDelete(){ if (IsDeleted) { throw new KnownException("部門已經被刪除"); } // ...}// 在命令處理器中var dept = await deptRepository.GetAsync(request.DeptId, cancellationToken) ?? throw new KnownException($"未找到部門
,前後端都用了TypeScript,項目還提供了很多代碼片段
,還有國際化支持,應該能有一些參考價值。緩存用Redis,自動化工具,項目選擇了FastEndpoints而不是傳統的Controller。可以多語言切換。這樣就保證了業務規則的一致性。開發體驗上,隻需要再加一個事件處理器就行了,框架會自動處理 。而且可以針對不同的場景做優化
。有興趣的朋友可以深入了解一下
:- NetCorePal Cloud Framework - 項目使用的基礎框架
- FastEndpoints - 輕量級API框架
- Vben Admin - 前端管理後台模板
- .NET Aspire - 雲原生應用開發平台
項目源碼地址:https://github.com/zhouda1fu/Ncp.Admin
性能也更好。其次是屬性都用private set