共用方式為


使用 DDD 和 CQRS 模式處理微服務中的商務複雜度

小提示

此內容是適用於容器化 .NET 應用程式的電子書.NET 微服務架構摘錄,可在 .NET Docs 或免費下載的 PDF 中取得,可脫機讀取。

.NET 微服務架構的容器化 .NET 應用程式電子書封面縮圖。

為每個微服務或限定內容設計定義域模型,以反映對商務領域的瞭解。

本節著重於當您需要處理複雜子系統時所實作的更進階微服務,或衍生自具有不斷變化的商務規則領域專家知識的微服務。 本節中使用的架構模式是以網域驅動設計 (DDD) 和命令和查詢責任隔離 (CQRS) 方法為基礎,如圖 7-1 所示。

比較外部和內部架構模式的圖表。

外部架構之間的差異:微服務模式、API 閘道、復原通訊、pub/sub 等,以及內部架構:數據驅動/CRUD、DDD 模式、相依性插入、多個連結庫等。

圖 7-1。 外部微服務架構與每個微服務的內部架構模式

不過,大部分數據驅動微服務的技術,例如如何實作 ASP.NET Core Web API 服務,或如何使用 Swashbuckle 或 NSwag 公開 Swagger 元數據,也適用於使用 DDD 模式在內部實作的更進階微服務。 本節是先前各節的延伸模組,因為先前所述的大部分做法也適用於這裡或任何類型的微服務。

本節會先提供 eShopOnContainers 參考應用程式中所使用簡化 CQRS 模式的詳細數據。 稍後,您將取得 DDD 技術的概觀,讓您能夠尋找可在應用程式中重複使用的常見模式。

DDD 是一個大主題,其中包含一組豐富的學習資源。 您可以從埃裡克·埃文斯的《Domain-Driven 設計》等書籍開始,以及沃恩·弗農、吉米·尼爾松、格雷格·楊、烏迪·達漢、吉米·博加德和其他許多 DDD/CQRS 專家的材料。 首先,您需要努力學習如何透過與具體業務領域專家的交談、白板演示以及領域建模會議來應用 DDD 技術。

其他資源

DDD (Domain-Driven 設計)
DDD 書籍
DDD 訓練