.NET微服务最佳实践eShopOnContainers
本文翻譯自微軟Docs, 內嵌譯者多年使用的參悟,如理解有誤,請不吝賜教。
微軟與社區(qū)專家合作,開發(fā)了功能齊全的云原生微服務示例應用eShopOnContainers。
該應用旨在展示使用.NET、Docker以及可選的Azure,Kubernetes技術來構建電商平臺。
功能 & 要求
簡要回顧eShopOnContainers應用的業(yè)務功能和技術目標,示例應用代表一個出售各種實體產(chǎn)品的(例如T恤和咖啡杯)電商平臺。
電商平臺要實現(xiàn)的一些基本功能:
?列出商品目錄?按類型過濾商品?按品牌過濾商品?將商品添加到購物車?編輯或刪除購物車中的物品?支付?注冊帳號?登錄?登出?訂單審核
示例應用還具有以下非功能性要求:
?必須具有高可用性,并且必須自動擴展以滿足不斷增長的流量(并在流量減少后再縮減)。?提供易于使用的運行狀態(tài)監(jiān)視和診斷日志,以幫助解決遇到的問題。?它應該支持敏捷開發(fā),包括對持續(xù)集成和部署(CI/CD)的支持。?除了支持傳統(tǒng)的Web前端和SPA Web前端,該應用程序還必須支持不同系統(tǒng)的移動客戶端應用程序。?支持跨平臺托管和跨平臺開發(fā)。
Web或移動客戶端通過HTTPS訪問ASP.NET Core MVC服務器程序或API網(wǎng)關程序。
API網(wǎng)關具有多種優(yōu)勢,例如將后端服務與各個前端客戶端解耦,并提供更好的安全性。
該應用程序還利用了BFF模式(服務于前端的后端),該模式建議為每個前端客戶端創(chuàng)建單獨的API網(wǎng)關。
上面的體系圖演示了基于請求是來自Web客戶端還是來自移動客戶端的API網(wǎng)關。
示例應用的功能被分解為許多不同的微服務:
?負責身份驗證和身份?列出產(chǎn)品目錄中的商品?購物車管理以及訂單管理。這些獨立的服務都有其自己的持久化存儲,沒有可以與所有服務交互的單個主數(shù)據(jù)存儲,
服務之間的協(xié)調和通信是通過消息總線來完成的。
每個微服務根據(jù)其各自的需求獨立設計。因此它們的技術堆棧是可以不同的(目前服務均是.NET構建并為云設計)。
簡單的服務提供了基本的創(chuàng)建、讀取、更新、刪除訪問(CRUD),而更高級的服務則使用領域驅動設計方法和模式來管理業(yè)務復雜性。
代碼結構
因為eShopOnContainers示例程序使用微服務,其GitHub存儲庫中包含許多獨立的項目文件。
除了獨立的項目方案和可執(zhí)行文件之外,各種服務還被設計為在獨立的容器中運行。
下圖顯示了完整的Visual Studio解決方案,管理組織了各種不同的項目。
該代碼被組織為支持不同的微服務,并且在每個微服務中,代碼分為領域邏輯、基礎設施以及用戶界面/服務端點。
Ref
???https://docs.microsoft.com/en-us/dotnet/architecture/cloud-native/introduce-eshoponcontainers-reference-app???https://github.com/dotnet-architecture/eShopOnContainers
更多干貨及最佳實踐分享
關注并星標我們
總結
以上是生活随笔為你收集整理的.NET微服务最佳实践eShopOnContainers的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在.NET Core 中使用 Fluen
- 下一篇: 抢鲜体验.NET6 Preview1,配