ECommerce Microservices:基於DDD+CQRS的實用電子商務.NET原始碼

banq發表於2022-03-18

ECommerce Microservices是一個虛構的電子商務,基於不同的軟體架構和技術,如微服務架構、垂直切片架構、CQRS 模式、領域驅動設計、事件驅動架構、收件箱和發件箱模式,並使用 Postgres 寫入端和 MongoDb 讀取端等。
該專案正在進行中,隨著時間的推移將新增新功能。
 
專案的目標
  • 帶有領域驅動設計(DDD)實現的微服務架構。
  • 為每個微服務正確地分離有界上下文
  • 透過使用RabbitMQ和一些自治服務的非同步訊息代理,在受約束的上下文之間進行通訊。
  • 簡單的CQRS實現和事件驅動架構,寫端使用Postgres,讀端使用MongoDB和Elastic Search。為了同步讀端和寫端,我將使用EventStore
  • Projections投射或Marten Projections。我們也可以透過在服務之間傳遞一些整合事件來同步我們的讀和寫模型,以實現最終一致性。
  • 實施各種型別的測試,如單元測試、整合測試和端到端測試。
  • 使用收件箱模式來保證接收方微服務的訊息空閒性和精確一次的交付模式,使用收件箱模式來確保任何訊息的丟失和至少一次的交付規則。
  • 使用最佳實踐和新技術以及設計模式
  • 使用事件風暴來提取資料模型和有邊界的環境(使用Miro)。
  • 使用Docker-Compose、Helm和Kubernetes作為我們的部署機制,同時使用Terraform作為基礎設施的程式碼。
  • 使用Istio和Service Mesh實現我們的微服務。


涉及技術庫:
  • .NET 6 - .NET框架和.NET核心,包括ASP.NET和ASP.NET核心
  •  Npgsql Entity Framework Core Provider - Npgsql有一個Entity Framework (EF) Core Provider。它的行為與其他EF Core提供者(如SQL Server)類似,所以一般的EF Core文件也適用於此。
  •  FluentValidation - 流行的.NET驗證庫,用於構建強型別的驗證規則。
  •  Swagger & Swagger UI - 用於記錄建立在ASP.NET Core上的API的Swagger工具。
  •  Serilog - 具有完全結構化事件的簡單.NET日誌。
  • Polly - Polly是一個.NET彈性和瞬時故障處理庫,允許開發人員以流暢和執行緒安全的方式表達策略,如重試、斷路、超時、隔板隔離和回退。
  •  Scrutor - Microsoft.Extensions.DependencyInjection的彙編掃描和裝飾擴充套件。
  •  Opentelemetry-dotnet - OpenTelemetry .NET客戶端
  •  DuendeSoftware IdentityServer - 用於ASP.NET Core的最靈活、最符合標準的OpenID Connect和OAuth 2.x框架。
  •  Hangfire - 在ASP.NET應用程式中執行即用即忘、延遲和重複性任務的簡便方法。
  •  EasyCaching - 開源快取庫,包含快取的基本用法和一些高階用法,可以幫助我們更容易地處理快取。
  •  AutoMapper - .NET中基於約定的物件-物件對映器。
  •  Hellang.Middleware.ProblemDetails - 用於處理.Net Core中異常的中介軟體。
  •  IdGen - Twitter Snowflake-alike ID generator for .Net。


 

相關文章