這是一個以 .NET 10 LTS 建立的 Clean Code / Pragmatic Clean Architecture 範本專案,適合快速建立同時需要 ASP.NET Core Web API 與背景 Worker 的後端服務。
Template.Domain:訂單聚合、業務規則、domain exception。Template.Application:use case contract、request/response record、repository 介面、unit of work、outbox contract。Template.Infrastructure:EF Core persistence、SQL Server 預設設定、repository 實作、outbox 儲存、migration-ready DbContext。Template.WebApi:Minimal API endpoint、Swagger、JWT Bearer 驗證、ProblemDetails、分級 health checks、correlation id、security headers、rate limiting、OpenTelemetry。Template.Worker:可替換 dispatcher 的 Outbox 背景處理服務與 OpenTelemetry outbox metrics。tests:Domain、Application、API、Worker 與 Outbox 行為測試。
啟動 SQL Server:
docker compose up -d還原、建置、測試:
dotnet restore
dotnet build
dotnet test啟動 API:
dotnet run --project src/Template.WebApi啟動 Worker:
dotnet run --project src/Template.Worker從此 repository 安裝範本:
dotnet new install .建立新服務:
dotnet new clean-code-api-worker -n SampleService常用選項:
dotnet new clean-code-api-worker -n SampleService `
--include-worker true `
--auth jwt `
--database sqlserver `
--sample-domain orders極簡骨架:
dotnet new clean-code-api-worker -n MinimalService `
--include-worker false `
--auth none `
--database none `
--sample-domain minimal需要移除本機範本時:
dotnet new uninstall .GET /healthGET /health/liveGET /health/readyGET /api/v1/orders?page=1&pageSize=20POST /api/v1/ordersGET /api/v1/orders/{id}
訂單相關 endpoint 預設需要 JWT Bearer authentication。錯誤回應統一使用 ProblemDetails / ValidationProblemDetails。開發用 signing key 僅供本機使用,上線前必須更換。
Web API 會在 response 加上 X-Correlation-Id,若 request 已帶入同名 header 會沿用該值。範本也預設加入基本 security headers 與 global fixed-window rate limiting。
預設使用 SQL Server:
{
"ConnectionStrings": {
"DefaultConnection": "Server=localhost,1433;Database=CleanCodeTemplate;User Id=sa;Password=Your_strong_password123;TrustServerCertificate=True"
}
}從 repository 根目錄建立 EF Core migration:
dotnet ef migrations add InitialCreate --project src/Template.Infrastructure --startup-project src/Template.WebApi只啟動 SQL Server:
docker compose up -d sqlserver啟動 SQL Server、API 與 Worker:
docker compose --profile app up -d --build