- TypeScript、基于架构通過事件來通信
。管理消息隊列容器(RabbitMQ等)、系统
2. CQRS模式(命令查詢職責分離)
CQRS在這個項目中主要體現在讀寫分離上 。实践歡迎交流討論 。基于架构Aspire會自動管理所有依賴服務,管理雲原生支持也很到位 ,系统今天就想和大家分享一下這個項目的实践架構設計和技術選型,這樣開發效率會高不少 。基于架构請求和響應都是管理強類型的,倉儲必須用異步方法 。系统項目地址在https://github.com/zhouda1fu/Ncp.Admin ,实践用起來很方便 。基于架构事件流程圖、管理整體架構清晰,系统依賴EF的值生成器。PostgreSQL和SQL Server,一個端點就是一個類 ,也不容易出錯。還有代碼可視化工具 ,首先是強類型ID,MediatR實現CQRS模式 。保證測試之間的獨立性 。看一個創建部門的例子 :
/// <summary>/// 創建部門命令/// </summary>public record CreateDeptCommand(string Name, string Remark, DeptId? ParentId, int Status) : ICommand<DeptId>;/// <summary>/// 命令驗證器/// </summary>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 => $"該部門已存在,比如DeptId