找到一个好的示例框架很难, 但不是不可能. 大多数是小型 Todo 风格的应用程序, 通常基于 SimpleCRUD. 值得庆幸的是, Microsoft 已经为 eShopOnContainers 创建了一个基于微服务的. NET Core 示例应用程序 https://github.com/dotnet-architecture/eShopOnContainers .
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 之间进行选择) 以及路线图中 https://github.com/dotnet/eShopOnContainers/wiki/01.-Roadmap-and-Milestones-for-future-releases 定义的其他功能来跨多个服务进行数据更新传播 .
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 https://samnewman.io/patterns/architectural/bff/ 和 Chris Richardson http://microservices.io/patterns/apigateway.html 的帖子.
虽然有点过时, 但特殊的还有一个 eShopOnContainers 的分支 https://github.com/Particular/eShopOnContainers , 但修改后运行在 NServiceBus 之上.
最近正打算把单体应用程序改造成微服务..
来源: https://www.cnblogs.com/fengqingyangNo1/p/9438428.html