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示例框架的开发环境概述。我只是想指出一些我认为在这个样本中做得很好的作品。

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

每个服务都包含自己的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模式。

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

Original: https://www.cnblogs.com/fengqingyangNo1/p/9438428.html
Author: 风清扬 No.1
Title: eShopOnContainers 是一个基于微服务的.NET Core示例框架

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/580154/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 【转】Nginx中sendfile的作用

    那么sendfile是什么东西,他是怎么影响性能的… … sendfile实际上是 Linux2.0+以后的推出的一个系统调用,web服务器可以通过调整自身…

    Java 2023年5月30日
    083
  • Sql练习记录

    题目: 第一道,有一个&a…

    Java 2023年6月7日
    078
  • 形参与实参的定义与区别

    博客园 :当前访问的博文已被密码保护 请输入阅读密码: Original: https://www.cnblogs.com/SuperAx/p/13177798.htmlAutho…

    Java 2023年6月5日
    095
  • 全面理解Java内存模型(JMM)及volatile关键字(转载)

    关联文章: 深入理解Java类型信息(Class对象)与反射机制 深入理解Java枚举类型(enum) 深入理解Java注解类型(@Annotation) 深入理解Java类加载器…

    Java 2023年5月29日
    089
  • Spring常用注解(SpirngBoot方面讲的更加详细)

    使用注解须知: 基本方向 1. bean @Component 2. 属性如何注入 @Component public class User{ public String name…

    Java 2023年6月14日
    094
  • Spring常用工具方法备忘录

    1:加载配置文件 Resource resource = new ClassPathResource("log4j.properties"); Properti…

    Java 2023年5月30日
    069
  • for、foreach、stream 哪家的效率更高,你真的用对了吗?

    昨天在《SQL中那么多函数,Java8为什么还要提供重复的Stream方法,多此一举?》一文中,有同学指出Stream在数据量不庞大的情况,效率不如for循环。 这个就触及到我的知…

    Java 2023年5月29日
    0120
  • 利用MySQL原数据信息批量转换指定库数据表生成Hive建表语句

    3.表属性实体类: 4.表结构实体类: 5.启动类: package ccc.contorller; import ccc.enty.ColumnSchema; import cc…

    Java 2023年6月9日
    064
  • 数据库的多表查询

    我们知道,增删查改这几种操作在开发过程中不可或缺,下面重点介绍的是查询操作 在数据库中,80%的操作是通过查询完成的.在实际开发中能中,不可能只会用到一张表,多表查询在查询中起很大…

    Java 2023年6月8日
    091
  • 两小无猜的爱恨情仇–java =+和+=揭秘

    故事背景 当一个人问另一个人”敢不敢”的时候,另一个人必须说”敢”,这就是游戏的规则。小男孩朱利安和小女孩苏菲的相遇即开始于这样一场…

    Java 2023年5月29日
    061
  • manjaro 安装后的基本配置

    第一步:设置官方镜像源 sudo pacman-mirrors -i -c China -m rank # 输入以上命令后会有弹出框,选择一个国内镜像(推荐 https://mir…

    Java 2023年6月6日
    082
  • 如何使用Arthas定位问题

    在我们日常的工作中,经常会遇到一些线上才会遇到的问题。Arthas无疑是我们在工作中,定位线上问题的神奇。下面,我将介绍一下我们在工作中经常用到的一些功能。 dashboard 首…

    Java 2023年6月7日
    077
  • 一些隐式转化的示例

    小转大默认转换 大转小需要强转转化 转换 的目的是赋值 //整形 默认 int 浮点型 默认 double 只有同类型数据才可以相加 结果是同类型数据 //1.自动类型转化 小转大…

    Java 2023年6月8日
    095
  • SpringCloud : 接入 微信公众号平台(一)、接入微信请求(支持多公众号)

    Feign 版本10.1.0 Spring 版本 5.1.5.RELEASE SpringBoot 版本 2.1.5.RELEASE SpringCloud 版本 2.1.1.RE…

    Java 2023年5月30日
    0128
  • NoteOfMySQL-07-索引

    1. 索引概述 创建索引的目的是为了优化数据库的查询速度,不添加索引的情况下需要遍历所有数据才能进行删、查、改等操作。 2. 索引存储类型 存储类型 支持的存储引擎 B型树(BTR…

    Java 2023年6月5日
    0121
  • 数据批处理速度慢?不妨试试这个

    业务系统产生的明细数据通常要经过加工处理,按照一定逻辑计算成需要的结果,用以支持企业的经营活动。这类数据加工任务一般会有很多个,需要批量完成计算,在银行和保险行业常常被称为跑批,其…

    Java 2023年6月15日
    0107
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球