1. 程式人生 > >.NET微服務最佳實踐 eShopOnContainers

.NET微服務最佳實踐 eShopOnContainers

> 本文翻譯自微軟Docs, 內嵌譯者多年使用的參悟,如理解有誤,請不吝賜教。 微軟與社群專家合作,開發了功能齊全的雲原生微服務示例應用eShopOnContainers。 該應用旨在展示使用.NET、Docker以及可選的Azure,Kubernetes技術來構建電商平臺。 ![](https://docs.microsoft.com/en-us/dotnet/architecture/cloud-native/media/eshoponcontainers-sample-app-screenshot.png) ## 功能 & 要求 簡要回顧eShopOnContainers應用的業務功能和技術目標,eShopOnContainers示例應用代表一個出售各種實體產品的(例如T恤和咖啡杯)電商平臺。 電商平臺要實現的一些基本功能: - 列出商品目錄 - 按型別過濾商品 - 按品牌過濾商品 - 將商品新增到購物車 - 編輯或刪除購物車中的物品 - 支付 - 註冊帳號 - 登入 - 登出 - 訂單稽核 示例應用還具有以下非功能性要求: - 必須具有**高可用性**,並且必須自動擴充套件以滿足不斷增長的流量(並在流量減少後再縮減)。 - 提供**易於使用的執行狀態監視和診斷日誌**,以幫助解決遇到的問題。 - 它應該**支援敏捷開發**,包括對持續整合和部署(CI / CD)的支援。 - 除了支援傳統的和SPA Web前端之外,該應用程式還**必須支援不同系統的移動客戶端應用程式**。 - **支援跨平臺託管和跨平臺開發**。 ![](https://docs.microsoft.com/en-us/dotnet/architecture/cloud-native/media/eshoponcontainers-development-architecture.png) ------ Web或移動客戶端通過HTTPS訪問`ASP.NET Core MVC伺服器程式或API閘道器程式`。 API閘道器具有多種優勢,例如將後端服務與各個前端客戶端解耦,並提供更好的安全性。 該應用程式還利用了`BFF模式(服務於前端的後端)`,該模式建議為每個前端客戶端建立單獨的API閘道器。 上面的體系圖演示了`基於請求是來自Web客戶端還是來自移動客戶端的API閘道器`。 ---- 示例應用的功能被分解為許多不同的微服務: - 負責身份驗證和身份 - 列出產品目錄中的商品 - 購物車管理以及訂單管理。 這些獨立的服務都有其自己的持久化儲存,沒有可以與所有服務互動的單個主資料儲存, 服務之間的協調和通訊是通過`訊息匯流排`來完成的。 --- 每個微服務根據其各自的需求獨立設計。因此它們的技術棧是可以不同的(目前服務均是.NET構建併為雲設計)。 簡單的服務提供了基本的建立、讀取、更新、刪除訪問(CRUD),而更高階的服務則使用`領域驅動設計方法`和模式來管理業務複雜性。 ![](https://docs.microsoft.com/en-us/dotnet/architecture/cloud-native/media/different-kinds-of-microservices.png) ## 程式碼結構 因為eShopOnContainers示例程式使用微服務,在其GitHub儲存庫中包含許多單獨的專案檔案。 除了獨立的專案方案和可執行檔案之外,各種服務還被設計為在獨立的容器中執行。 下圖顯示了完整的Visual Studio解決方案,管理組織了各種不同的專案。 ![](https://docs.microsoft.com/en-us/dotnet/architecture/cloud-native/media/projects-in-visual-studio-solution.png) 該程式碼被組織為支援不同的微服務,並且在每個微服務中,程式碼分為領域邏輯、基礎設施以及使用者介面/服務端點。 ### Ref - https://docs.microsoft.com/en-us/dotnet/architecture/cloud-native/introduce-eshoponcontainers-reference-app - https://github.com/dotnet-architecture/eShopOnContainers