歡迎光臨
每天分享高質量文章

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之上。

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

原文地址:https://www.cnblogs.com/fengqingyangNo1/p/9438428.html

    已同步到看一看
    贊(0)

    分享創造快樂