.NET微服務最佳實踐 eShopOnContainers


本文翻譯自微軟Docs, 內嵌譯者多年使用的參悟,如理解有誤,請不吝賜教。

微軟與社區專家合作,開發了功能齊全的雲原生微服務示例應用eShopOnContainers。
該應用旨在展示使用.NET、Docker以及可選的Azure,Kubernetes技術來構建電商平台。

功能 & 要求

簡要回顧eShopOnContainers應用的業務功能和技術目標,eShopOnContainers示例應用代表一個出售各種實體產品的(例如T恤和咖啡杯)電商平台。

電商平台要實現的一些基本功能:

  • 列出商品目錄
  • 按類型過濾商品
  • 按品牌過濾商品
  • 將商品添加到購物車
  • 編輯或刪除購物車中的物品
  • 支付
  • 注冊帳號
  • 登錄
  • 登出
  • 訂單審核

示例應用還具有以下非功能性要求:

  • 必須具有高可用性,並且必須自動擴展以滿足不斷增長的流量(並在流量減少后再縮減)。
  • 提供易於使用的運行狀態監視和診斷日志,以幫助解決遇到的問題。
  • 它應該支持敏捷開發,包括對持續集成和部署(CI / CD)的支持。
  • 除了支持傳統的和SPA Web前端之外,該應用程序還必須支持不同系統的移動客戶端應用程序
  • 支持跨平台托管和跨平台開發


Web或移動客戶端通過HTTPS訪問ASP.NET Core MVC服務器程序或API網關程序

API網關具有多種優勢,例如將后端服務與各個前端客戶端解耦,並提供更好的安全性。

該應用程序還利用了BFF模式(服務於前端的后端),該模式建議為每個前端客戶端創建單獨的API網關。

上面的體系圖演示了基於請求是來自Web客戶端還是來自移動客戶端的API網關


示例應用的功能被分解為許多不同的微服務:

  • 負責身份驗證和身份
  • 列出產品目錄中的商品
  • 購物車管理以及訂單管理。

這些獨立的服務都有其自己的持久化存儲,沒有可以與所有服務交互的單個主數據存儲,
服務之間的協調和通信是通過消息總線來完成的。


每個微服務根據其各自的需求獨立設計。因此它們的技術棧是可以不同的(目前服務均是.NET構建並為雲設計)。
簡單的服務提供了基本的創建、讀取、更新、刪除訪問(CRUD),而更高級的服務則使用領域驅動設計方法和模式來管理業務復雜性。

代碼結構

因為eShopOnContainers示例程序使用微服務,在其GitHub存儲庫中包含許多單獨的項目文件。
除了獨立的項目方案和可執行文件之外,各種服務還被設計為在獨立的容器中運行。

下圖顯示了完整的Visual Studio解決方案,管理組織了各種不同的項目。

該代碼被組織為支持不同的微服務,並且在每個微服務中,代碼分為領域邏輯、基礎設施以及用戶界面/服務端點。

Ref


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM