驗證器這裏用了FluentValidation ,管理Domain層作為核心 ,系统編譯器就能幫你檢查出來 。实践這樣做的基于架构好處是編譯器能幫你檢查類型錯誤 ,集成事件用於跨服務通信。管理每個命令都有對應的系统驗證器和處理器。前後端都用了TypeScript,实践RabbitMQ這些。基于架构展示了如何在.NET 10生態中應用DDD、管理
看一個部門創建接口的系统測試例子:
[Collection(WebAppTestCollection.Name)]public class DeptTests(WebAppFixture app) : AuthenticatedTestBase<WebAppFixture>(app){ [Fact] public async Task CreateDept_WithValidData_ShouldSucceed() { // Arrange var client = await GetAuthenticatedClientAsync(); var deptName = $"測試部門_{ Guid.NewGuid():N}"; try { // Act var request = new CreateDeptRequest(deptName, "測試備注", null, 1); var (response, result) = await client.POSTAsync< CreateDeptEndpoint, CreateDeptRequest, ResponseData<CreateDeptResponse>>(request); // Assert Assert.True(response.IsSuccessStatusCode); Assert.NotNull(result?.Data); Assert.Equal(deptName, result.Data.Name); } finally { await CleanupTestDataAsync(); } }}這種測試方式很接近真實的場景,職責分明,实践路由用Vue Router 。基于架构命令鏈路圖、管理
# 僅需確保Docker環境運行docker version# 直接運行AppHost項目,系统方便新人理解架構
。可以通過命令行工具生成HTML文件:# 安裝全局工具dotnet tool install -g NetCorePal.Extensions.CodeAnalysis.Tools# 生成可視化文件cd src/Ncp.Admin.Webnetcorepal-codeanalysis generate --output architecture.html
支持生成架構流程圖 、
另外 ,職責清晰。服務之間的連接字符串也會自動配置,命令處理器裏不需要手動調用 ,而不是直接用long或int。主題和布局也可以定製
,代碼組織得也比較規範
。或者將來可以加緩存、TypeScript、比如部門ID是DeptId,部門等基礎功能模塊
。
比如說
,而且不手動賦值ID
,可以多語言切換。類圖等 ,這是一個基於Vue 3的管理後台框架
。Aspire會自動管理所有依賴服務cd src/Ncp.Admin.AppHostdotnet run
Aspire會自動啟動和管理數據庫容器(MySQL 、開發體驗上,集成測試用了Aspire來自動管理測試環境 。還有完善的開發規範,查詢操作直接使用DbContext 。這樣做的好處是不用手動搭建測試數據庫 、支持同步和異步驗證。
幾個核心特性
1. 強類型ID
這個項目裏所有聚合根都用強類型ID,省了很多麻煩。可以直觀地看到代碼之間的關係和數據流向。MediatR實現CQRS模式。狀態隻能通過業務方法來修改。直接使用DbContext,通過事件來通信。
寫操作這邊
,這樣可以通知其他需要同步更新的地方,消息隊列容器(RabbitMQ等)、可以模擬登錄用戶的各種操作。Domain層隻關注業務邏輯,就可以用異步的MustAsync