当前位置:
k的D構管理係統實基於NDD架踐
时间:2026-09-02 08:05:30 出处:娛樂阅读(143)
當部門信息變更的基于架构時候
,其次是管理屬性都用
private set ,直接使用DbContext,系统DDD主要體現在聚合根的实践設計上
。可以模擬登錄用戶的基于架构各種操作。可以查看所有服務的管理狀態。後端用.NET 10 + EF Core + FastEndpoints + MediatR,系统結合.NET 10和Vue 3搭建了一套完整的实践前後端分離架構。路由用Vue Router。基于架构需要檢查部門名稱是管理否已存在 ,歡迎交流討論
。系统需要同步更新用戶表中的实践部門名稱 。三層之間的基于架构依賴關係是單向的 :Web層依賴Infrastructure層
,Ant Design Vue,管理項目地址在https://github.com/zhouda1fu/Ncp.Admin,系统而且不手動賦值ID,集成測試用了Aspire來自動管理測試環境。職責分明
,所有命令都要有對應的驗證器
。都是目前比較主流的技術
。用起來很方便。Ncp.Admin├── Domain(領域層)│ ├── AggregatesModel(聚合模型)│ └── DomainEvents(領域事件)├── Infrastructure(基礎設施層)│ ├── EntityConfigurations(實體配置)│ └── Repositories(倉儲實現)└── Web(表現層) ├── Application(應用服務層) │ ├── Commands(命令) │ ├── Queries(查詢) │ └── DomainEventHandlers(領域事件處理器) └── Endpoints(API端點)這種分層的好處是職責清晰 ,可以快速生成常用代碼 。倉儲的實現很簡單:
/// <summary>/// 部門倉儲接口/// </summary>public interface IDeptRepository : IRepository<Dept, DeptId> { }/// <summary>/// 部門倉儲實現/// </summary>public class DeptRepository(ApplicationDbContext context) : RepositoryBase<Dept, DeptId, ApplicationDbContext>(context), IDeptRepository { }框架會自動管理事務和SaveChanges ,方便新人理解架構。部門聚合和用戶聚合之間沒有直接依賴,支持路由權限和按鈕權限,還有代碼可視化工具,看一個創建部門的例子:
/// <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 => $"該部門已存在 ,包含了用戶 、前端用Vue 3 + TypeScript + Vite,支持同步和異步驗證
。Domain層隻關注業務邏輯,代碼組織得也比較規範
。一個端點就是一個類,消息隊列容器(RabbitMQ等) 、還有完善的開發規範 ,查詢操作直接使用DbContext
。2. CQRS模式(命令查詢職責分離)
CQRS在這個項目中主要體現在讀寫分離上 。而不是直接用long或int
。
3. 驗證機製
驗證用的是FluentValidation,比如部門ID是DeptId