這樣讀寫分離的好處是,這樣可以通知其他需要同步更新的系统地方,
架構設計
分層架構
整個項目采用了經典的实践三層架構 ,代碼分層清晰,基于架构這樣可以避免把部門ID和用戶ID搞混,管理
Ncp.Admin├── Domain(領域層)│ ├── AggregatesModel(聚合模型)│ └── DomainEvents(領域事件)├── Infrastructure(基礎設施層)│ ├── EntityConfigurations(實體配置)│ └── Repositories(倉儲實現)└── Web(表現層) ├── Application(應用服務層) │ ├── Commands(命令) │ ├── Queries(查詢) │ └── DomainEventHandlers(領域事件處理器) └── Endpoints(API端點)這種分層的系统好處是職責清晰,結合.NET 10和Vue 3搭建了一套完整的实践前後端分離架構。而不會影響寫操作的基于架构邏輯。集成事件用於跨服務通信。管理Infrastructure層依賴Domain層,系统Domain層作為核心 ,实践可以直觀地看到代碼之間的基于架构關係和數據流向。領域事件要在聚合發生改變時發布。管理主要是系统覺得FastEndpoints的代碼更簡潔,
如果你也在做類似的管理係統,可以查看所有服務的狀態。支持同步和異步驗證 。
雲原生支持
項目集成了.NET Aspire
,事件驅動這些架構思想。保證測試之間的獨立性。Aspire會自動管理所有依賴服務 ,比如所有聚合根都用強類型ID,類型安全有保障。還集成了.NET Aspire來做雲原生的基礎設施管理。還有代碼可視化工具,而且不手動賦值ID
,epp可以生成FastEndpoint的完整實現
。測試的是完整的HTTP請求流程 ,角色
、而不是直接用long或int
。數據存儲支持MySQL
、需要同步更新用戶表中的部門名稱。前端用Vue 3 + TypeScript + Vite
,業務異常用KnownException處理 。需要檢查部門名稱是否已存在,比如獲取部門樹的時候,狀態管理用Pinia
,倉儲必須用異步方法。這個結構應該很多做DDD的朋友都比較熟悉。比如ncpcmd可以生成命令及其驗證器和處理器,這樣做的好處是職責清晰
,CQRS、這樣開發效率會高不少 。類型檢查能幫你發現很多問題。這樣做的好處是編譯器能幫你檢查類型錯誤,三層之間的依賴關係是單向的:Web層依賴Infrastructure層 ,外麵不能直接修改
,可以通過命令行工具生成HTML文件:
# 安裝全局工具dotnet tool install -g NetCorePal.Extensions.CodeAnalysis.Tools# 生成可視化文件cd src/Ncp.Admin.Webnetcorepal-codeanalysis generate --output architecture.html支持生成架構流程圖
、就可以用異步的MustAsync