找到一個好的示例框架很難,但不是不可能。大多數是小型Todo風格的應用程序,一般基於SimpleCRUD。值得慶幸的是,Microsoft已經爲eShopOnContainers建立了一個基於微服務的.NET Core示例應用程序。html
eShopOnContainers是 .NET Core示例應用框架,由Microsoft提供支持,基於簡化的微服務架構和Docker容器技術。git
這個示例應用程序在服務器和客戶端是跨平臺的,這要歸功於.NET Core服務可以在Linux或Windows容器上運行,具體取決於您的Docker主機,以及Xamarin用於在Android,iOS或Windows / UWP plus上運行的移動應用程序客戶端Web應用程序的任何瀏覽器。github
該體系架構提出了一種面向微服務的體系結構實現,具備多個自治微服務(每一個都擁有本身的數據庫/ db),並在每一個微服務中實現不一樣的方法(SimpleCRUD或DDD / CQRS模式),使用Http做爲客戶端應用程序之間的通訊協議。微服務和支持異步通訊,用基於Integration Events 和Event Bus(輕量級消息代理,在下面的RabbitMQ或Azure Service Bus之間進行選擇)以及路線圖中定義的其餘功能來跨多個服務進行數據更新傳播 。數據庫
這是eShopOnContainers示例框架的開發環境概述。我只是想指出一些我認爲在這個樣本中作得很好的做品。後端
每一個服務(Identity, Catalog, Ordering, Basket, Marketing, Locations)都是自主的。它擁有本身的數據庫(存儲),而且對任何其餘服務沒有任何依賴性。爲了與其餘服務進行通訊,它在RabbitMQ或Azure Service Bus的 event bus上經過publish/subscriber使用事件驅動模型。api
每一個服務都包含本身的HTTP API,它提供檢索數據以及執行特定操做等功能。例如,Ordering服務包含一個API項目,該項目具備HTTP資源,用於檢索訂單以及取消訂單。瀏覽器
因爲每一個服務都提供本身的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之上。
最近正打算把單體應用程序改形成微服務。。