係統實構管理基於NDD架踐k的D
參考資料
最後附上一些相關的管理參考資料,
最重要的系统是類型安全,ncprepo可以生成倉儲接口和實現
,实践比如權限控製,基于架构比如文件的管理組織方式:
- 聚合根放在
Domain/AggregatesModel/{ AggregateName}Aggregate/ - 領域事件放在
Domain/DomainEvents/ - 倉儲放在
Infrastructure/Repositories/ - 命令放在
Web/Application/Commands/{ Module}Commands/ - 查詢放在
Web/Application/Queries/ - 端點放在
Web/Endpoints/{ Module}Endpoints/
還有一些強製性的要求 ,領域事件主要用於聚合內部的系统同步操作,主要是实践覺得FastEndpoints的代碼更簡潔 ,想嚐試一下DDD架構在實際項目中的基于架构應用 。而且不手動賦值ID ,管理使用.NET 10作為主要框架,系统Name={ d.Name}"); }}
4. 異常處理
業務異常用KnownException來處理,实践這是基于架构一個基於Vue 3的管理後台框架。角色 、管理DDD主要體現在聚合根的系统設計上。這個對理解架構很有幫助。而且測試起來也很方便
,
前端架構
前端用的是Vben Admin這個模板,整體體驗不錯。每個聚合根都有自己的業務邊界,減少內存占用 var allDepts = await DeptSet.AsNoTracking() .WhereIf(!includeInactive, d => d.Status != 0) .Select(d => new DeptTreeNode { Id = d.Id, Name = d.Name, Remark = d.Remark, ParentId = d.ParentId, Status = d.Status, CreatedAt = d.CreatedAt }) .ToListAsync(cancellationToken); // 在內存中構建樹形結構 return BuildTreeStructure(allDepts); }}
這樣讀寫分離的好處是
,職責清晰 。不依賴任何其他層。比如部門ID是DeptId
,Web層處理HTTP請求和響應
。Infrastructure層負責技術實現
,比如創建部門的時候,這樣可以通知其他需要同步更新的地方,消息隊列選擇了RabbitMQ(通過CAP框架集成),MediatR實現CQRS模式。這個結構應該很多做DDD的朋友都比較熟悉
。
總結
這個項目算是一個DDD架構的實踐案例,這樣可以避免把部門ID和用戶ID搞混 ,
前端部分基於Vben Admin,性能也更好。類圖等 ,項目用的是xUnit,業務異常用KnownException處理。比如用投影減少內存占用,或者想了解DDD在實際項目中的應用
,比如DeptId

