eShopOnContainers 是一個基於微服務的.NET Core示例框架


    找到一個好的示例框架很難,但不是不可能。大多數是小型Todo風格的應用程序,通常基於SimpleCRUD。值得慶幸的是,Microsoft已經為eShopOnContainers創建了一個基於微服務的.NET Core示例應用程序

 

    eShopOnContainers是 .NET Core示例應用框架,由Microsoft提供支持,基於簡化的微服務架構和Docker容器技術。

這個示例應用程序在服務器和客戶端是跨平台的,這要歸功於.NET Core服務能夠在Linux或Windows容器上運行,具體取決於您的Docker主機,以及Xamarin用於在Android,iOS或Windows / UWP plus上運行的移動應用程序客戶端Web應用程序的任何瀏覽器。

該體系架構提出了一種面向微服務的體系結構實現,具有多個自治微服務(每個都擁有自己的數據庫/ db),並在每個微服務中實現不同的方法(SimpleCRUD或DDD / CQRS模式),使用Http作為客戶端應用程序之間的通信協議。微服務和支持異步通信,用基於Integration Events 和Event Bus(輕量級消息代理,在下面的RabbitMQ或Azure Service Bus之間進行選擇)以及路線圖中定義的其他功能來跨多個服務進行數據更新傳播  

eShopOnContainers

這是eShopOnContainers示例框架的開發環境概述。我只是想指出一些我認為在這個樣本中做得很好的作品。

 

 

Service Autonomy

每個服務(Identity, Catalog, Ordering, Basket, Marketing, Locations)都是自主的。它擁有自己的數據庫(存儲),並且對任何其他服務沒有任何依賴性。為了與其他服務進行通信,它在RabbitMQ或Azure Service Bus的 event bus上通過publish/subscriber使用事件驅動模型。

每個服務都包含自己的HTTP API,它提供檢索數據以及執行特定操作等功能。例如,Ordering服務包含一個API項目,該項目具有HTTP資源,用於檢索訂單以及取消訂單。

 

View Composition

由於每個服務都提供自己的HTTP API來檢索該服務中擁有的特定數據,因此最終需要從多個服務組合你需要的視圖。

Backend-For-Frontends(BFF)模式用於為特定客戶端類型提供單個API后端。例如,MVC和SPA應用程序使用Web-Shipping和Web-Marketing BFF,而Xamarin移動應用程序使用Mobile-Shopping和Mobile-Marketing BFF。最終,這些BFF對所需服務進行HTTP調用,以組成客戶端所需的數據。

 

其他

我強烈建議查看應用程序並進行一些挖掘。有許多不同的服務,每個服務都有自己獨特的架構。例如在其HTTP API中通過MediatR庫使用CQRS的訂購服務。它還使用了一些技術DDD模式。

如果你對Backends-For-Frontends感興趣,我建議你查看Sam Newman  和Chris Richardson的帖子

雖然有點過時,但特殊的還有一個eShopOnContainers 分支,但修改后運行在NServiceBus之上。

最近正打算把單體應用程序改造成微服務。。

 

 


免責聲明!

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



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