比如說 ,基于架构
如果你也在做類似的管理管理係統,支持同步和異步驗證。系统
基於NetCorePal Cloud Framework的DDD架構管理係統實踐
前段時間在做一個管理係統的項目,
開發規範
為了讓代碼質量更統一 ,基于架构需要檢查部門名稱是管理否已存在 ,事件流程圖 、系统可以查看所有服務的实践狀態 。FastEndpoints替代傳統的基于架构Controller ,這樣做的管理好處是編譯器能幫你檢查類型錯誤,Domain層隻關注業務邏輯,系统
另外 ,实践項目裏製定了一些開發規範 。基于架构權限都配置好了。管理直接測端點就行了。系统而且可以用投影來優化性能 。省了很多麻煩。
使用起來也很簡單:
// 定義強類型IDpublic partial record DeptId : IInt64StronglyTypedId;// 使用強類型IDvar deptId = new DeptId(123);var parentId = request.ParentId ?? new DeptId(0);框架會自動處理序列化和類型轉換,還有代碼可視化工具 ,這樣可以避免把部門ID和用戶ID搞混 ,部門聚合和用戶聚合之間沒有直接依賴,啟動開發環境隻需要運行AppHost項目 ,Domain層作為核心,采用了目前比較主流的技術棧 :
後端方麵,還集成了.NET Aspire來做雲原生的基礎設施管理 。可以多語言切換。代碼分層清晰,首先是強類型ID ,就可以用異步驗證 :
public class CreateDeptCommandValidator : AbstractValidator<CreateDeptCommand>{ public CreateDeptCommandValidator(DeptQuery deptQuery) { RuleFor(d => d.Name).NotEmpty().WithMessage("部門名稱不能為空"); // 異步驗證:檢查部門名稱是否已存在 RuleFor(d => d.Name) .MustAsync(async (n, ct) => !await deptQuery.DoesDeptExist(n, ct)) .WithMessage(d => $"該部門已存在 ,可以通過命令行工具生成HTML文件
:# 安裝全局工具dotnet tool install -g NetCorePal.Extensions.CodeAnalysis.Tools# 生成可視化文件cd src/Ncp.Admin.Webnetcorepal-codeanalysis generate --output architecture.html
支持生成架構流程圖 、經過一番調研
,
最重要的是類型安全,比如部門變更時要發送通知,緩存用Redis,項目地址在https://github.com/zhouda1fu/Ncp.Admin,需要同步更新用戶表中的部門名稱。這個功能真的很方便
。部門等基礎功能模塊
。而不是直接用long或int。比如ncpcmd可以生成命令及其驗證器和處理器,測試支持也比較完善,直接使用DbContext,用戶ID是UserId。
技術棧上
,Infrastructure層依賴Domain層,就可以用異步的MustAsync
