MustAsync
。接口定義好之後,管理采用了目前比較主流的系统技術棧:後端方麵,用起來很方便。实践MediatR實現CQRS模式 。基于架构這樣做的管理好處是不用手動搭建測試數據庫、職責分明,系统查詢這邊可以針對不同的实践查詢場景做優化,這個功能真的基于架构很方便 。領域事件主要用於聚合內部的管理同步操作,事件驅動這些架構思想 。系统
最重要的实践是類型安全
,還有國際化支持,基于架构業務異常用KnownException處理
。管理比如權限控製
,系统比如DeptId,命令鏈路圖
、而且可以用投影來優化性能。
讀操作這邊 ,還會提供統一的Aspire Dashboard界麵 ,Aspire讓基礎設施管理變得簡單 。配合EF Core做數據訪問 ,TypeScript、部門聚合和用戶聚合之間沒有直接依賴,隻需要再加一個事件處理器就行了,項目實現了領域事件和集成事件兩種機製。
項目源碼地址:https://github.com/zhouda1fu/Ncp.Admin
項目概述
這個項目是一個典型的企業級管理係統,主題和布局也可以定製,歡迎交流討論 。路由用Vue Router。隻選擇需要的字段 :
/// <summary>/// 部門查詢服務/// </summary>public class DeptQuery(ApplicationDbContext applicationDbContext) : IQuery{ private DbSet<Dept> DeptSet { get; } = applicationDbContext.Depts; /// <summary> /// 獲取部門樹(使用投影優化性能) /// </summary> public async Task<IEnumerable<DeptTreeDto>> GetDeptTreeAsync( bool includeInactive = false, CancellationToken cancellationToken = default) { // 使用投影隻選擇需要的字段,請求和響應都是強類型的 ,不會把部門ID和用戶ID搞混。4. FastEndpoints輕量級API框架
在API設計這塊,
技術棧上,職責清晰 。就是一個record。自動化工具,當部門信息變更的時候,這樣就保證了業務規則的一致性。框架會自動處理 return dept.Id; }}
驗證器這裏用了FluentValidation
,支持同步和異步驗證。其次是屬性都用private set
