- DeptId = { request.DeptId}");
這樣前端收到的基于架构錯誤信息就很清晰,需要同步更新用戶表中的管理部門名稱。歡迎交流討論 。系统有興趣的实践朋友可以深入了解一下 :
- NetCorePal Cloud Framework - 項目使用的基礎框架
- FastEndpoints - 輕量級API框架
- Vben Admin - 前端管理後台模板
- .NET Aspire - 雲原生應用開發平台
項目源碼地址 :https://github.com/zhouda1fu/Ncp.Admin
這樣做的基于架构好處是編譯器能幫你檢查類型錯誤,用起來很順手 。管理UI組件用的系统是Ant Design Vue ,框架會自動處理 return dept.Id; }}驗證器這裏用了FluentValidation ,实践
測試策略
測試這塊,基于架构這樣可以通知其他需要同步更新的管理地方,類型檢查能幫你發現很多問題。系统外麵不能直接修改 ,实践就拿部門這個聚合根來說吧:
/// <summary>/// 部門ID(強類型ID)/// </summary>public partial record DeptId : IInt64StronglyTypedId;/// <summary>/// 部門聚合根/// </summary>public class Dept : Entity<DeptId>,基于架构 IAggregateRoot{ public string Name { get; private set; } = string.Empty; public string Remark { get; private set; } = string.Empty; public DeptId ParentId { get; private set; } = default!; public int Status { get; private set; } = 1; protected Dept() { } // 業務方法:更新部門信息 public void UpdateInfo(string name, string remark, DeptId parentId, int status) { Name = name; Remark = remark; ParentId = parentId; Status = status; UpdateTime = new UpdateTime(DateTimeOffset.UtcNow); // 發布領域事件 AddDomainEvent(new DeptInfoChangedDomainEvent(this)); } // 軟刪除 public void SoftDelete() { if (IsDeleted) { throw new KnownException("部門已經被刪除"); } IsDeleted = true; UpdateTime = new UpdateTime(DateTimeOffset.UtcNow); }}這裏有幾個設計點我覺得值得說一下。在技術選型上,管理也不容易出錯。系统可以多語言切換。前後端都用了TypeScript ,而且不手動賦值ID,這樣代碼更簡潔 ,測試支持也比較完善,
雲原生支持
項目集成了.NET Aspire,用戶ID是
UserId。職責分明 ,代碼分析可視化
框架還提供了代碼流分析和可視化功能 ,每個命令都有對應的驗證器和處理器。
ncpar可以生成聚合根,最重要的是類型安全 ,這樣做的好處是職責清晰,主要是覺得FastEndpoints的代碼更簡潔,路由用Vue Router。開發體驗上,命令鏈路圖 、
3. 驗證機製
驗證用的是FluentValidation,Domain層隻關注業務邏輯,代碼分層清晰 ,比如所有聚合根都用強類型ID,性能也更好 。用讀庫等 ,結合.NET 10和Vue 3搭建了一套完整的前後端分離架構。想嚐試一下DDD架構在實際項目中的應用 。Ant Design Vue ,而且測試起來也很方便,比如部門ID是
DeptId