Skip to content

About

一個.Net 專案 使用 CleanCode 風格撰寫的 Template

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

CleanCodeTemplate

這是一個以 .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

作為 dotnet new 範本使用

從此 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 .

API

  • GET /health
  • GET /health/live
  • GET /health/ready
  • GET /api/v1/orders?page=1&pageSize=20
  • POST /api/v1/orders
  • GET /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

Docker

只啟動 SQL Server:

docker compose up -d sqlserver

啟動 SQL Server、API 與 Worker:

docker compose --profile app up -d --build

文件

About

一個.Net 專案 使用 CleanCode 風格撰寫的 Template

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages