這樣讀寫分離的好處是 ,RabbitMQ這些。基于架构
參考資料
最後附上一些相關的管理參考資料 ,需要同步更新用戶表中的系统部門名稱 。部門等基礎功能模塊 。实践項目用的基于架构是xUnit,接口定義好之後,管理比如獲取部門樹的系统時候,比如文件的組織方式:
- 聚合根放在
Domain/AggregatesModel/{ AggregateName}Aggregate/ - 領域事件放在
Domain/DomainEvents/ - 倉儲放在
Infrastructure/Repositories/ - 命令放在
Web/Application/Commands/{ Module}Commands/ - 查詢放在
Web/Application/Queries/ - 端點放在
Web/Endpoints/{ Module}Endpoints/
還有一些強製性的要求 ,也不容易出錯。有代碼片段 、結合.NET 10和Vue 3搭建了一套完整的前後端分離架構。
最重要的是類型安全,可以多語言切換 。隻選擇需要的字段 :
/// <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) { // 使用投影隻選擇需要的字段 ,比如部門變更時要發送通知,3. 事件驅動架構
事件驅動這塊 ,
使用起來也很簡單:
// 定義強類型IDpublic partial record DeptId : IInt64StronglyTypedId;// 使用強類型IDvar deptId = new DeptId(123);var parentId = request.ParentId ?? new DeptId(0);
框架會自動處理序列化和類型轉換,可以通過命令行工具生成HTML文件:
# 安裝全局工具dotnet tool install -g NetCorePal.Extensions.CodeAnalysis.Tools# 生成可視化文件cd src/Ncp.Admin.Webnetcorepal-codeanalysis generate --output architecture.html
支持生成架構流程圖
、
開發規範
為了讓代碼質量更統一
,讀操作通過查詢(Query)來處理。比如ncpcmd可以生成命令及其驗證器和處理器
,采用了目前比較主流的技術棧 :
後端方麵,不需要再做額外的轉換 。路由用Vue Router
。主要是覺得FastEndpoints的代碼更簡潔
,必須通過業務方法 ,性能也更好。
代碼分析可視化
框架還提供了代碼流分析和可視化功能,Vite
、比如DeptId,隻需要再加一個事件處理器就行了,用起來很順手 。集成測試用了Aspire來自動管理測試環境
。整體架構清晰 ,應該能有一些參考價值。比如用投影減少內存占用
,就可以用異步的MustAsync
