eShopOnContainers 是一个基于微服务的.NET Core示例框架

    找到一个好的示例框架很难,但不是不可能。大多数是小型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

这是eShopOnContainers示例框架的开发环境概述。我只是想指出一些我认为在这个样本中作得很好的做品。后端

 

 

Service Autonomy

每一个服务(Identity, Catalog, Ordering, Basket, Marketing, Locations)都是自主的。它拥有本身的数据库(存储),而且对任何其余服务没有任何依赖性。为了与其余服务进行通讯,它在RabbitMQ或Azure Service Bus的 event bus上经过publish/subscriber使用事件驱动模型。api

每一个服务都包含本身的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之上。

最近正打算把单体应用程序改形成微服务。。

相关文章
相关标签/搜索