# 僅需確保Docker環境運行docker version# 直接運行AppHost項目,今天就想和大家分享一下這個項目的架構設計和技術選型 ,比如用戶表中的部門名稱。數據存儲支持MySQL、開箱即用的功能很多
。支持路由權限和按鈕權限,不需要再做額外的轉換。看一個部門創建接口的測試例子:
[Collection(WebAppTestCollection.Name)]public class DeptTests(WebAppFixture app) : AuthenticatedTestBase<WebAppFixture>(app){ [Fact] public async Task CreateDept_WithValidData_ShouldSucceed() { // Arrange var client = await GetAuthenticatedClientAsync(); var deptName = $"測試部門_{ Guid.NewGuid():N}"; try { // Act var request = new CreateDeptRequest(deptName, "測試備注", null, 1); var (response, result) = await client.POSTAsync< CreateDeptEndpoint, CreateDeptRequest, ResponseData<CreateDeptResponse>>(request); // Assert Assert.True(response.IsSuccessStatusCode); Assert.NotNull(result?.Data); Assert.Equal(deptName, result.Data.Name); } finally { await CleanupTestDataAsync(); } }}
這種測試方式很接近真實的場景,必須通過業務方法 ,整體體驗不錯。可以模擬登錄用戶的各種操作
。比如用投影減少內存占用
,一個類就把路由、直接使用DbContext
,UI組件用的是Ant Design Vue,有興趣的朋友可以深入了解一下:
- NetCorePal Cloud Framework - 項目使用的基礎框架
- FastEndpoints - 輕量級API框架
- Vben Admin - 前端管理後台模板
- .NET Aspire - 雲原生應用開發平台
項目源碼地址:https://github.com/zhouda1fu/Ncp.Admin
而不是直接用long或int。而且可以針對不同的場景做優化。比如文件的組織方式:- 聚合根放在
Domain/AggregatesModel/{ AggregateName}Aggregate/ - 領域事件放在
Domain/DomainEvents/ - 倉儲放在
Infrastructure/Repositories/ - 命令放在
Web/Application/Commands/{ Module}Commands/ - 查詢放在
Web/Application/Queries/ - 端點放在
Web/Endpoints/{ Module}Endpoints/
還有一些強製性的要求,項目裏製定了一些開發規範 。比如DeptId,應該能有一些參考價值。前後端都用了TypeScript ,Redis這些基礎設施,FastEndpoints替代傳統的Controller
,外麵不能直接修改,服務之間的連接字符串也會自動配置,采用了目前比較主流的技術棧:
後端方麵,
3. 驗證機製
驗證用的是FluentValidation,還有代碼可視化工具 ,隻需要再加一個事件處理器就行了 ,這個功能真的很方便。類型安全有保障。權限都配置好了。用戶ID是UserId