.NET微服务最佳实践eShopOnContainers

本文翻译自微软Docs, 内嵌译者多年使用的参悟,如理解有误,请不吝赐教。

微软与社区专家合作,开发了功能齐全的云原生微服务示例应用eShopOnContainers。
该应用旨在展示使用.NET、Docker以及可选的Azure,Kubernetes技术来构建电商平台。

功能 & 要求

简要回顾eShopOnContainers应用的业务功能和技术目标,示例应用代表一个出售各种实体产品的(例如T恤和咖啡杯)电商平台。

电商平台要实现的一些基本功能:

•列出商品目录•按类型过滤商品•按品牌过滤商品•将商品添加到购物车•编辑或删除购物车中的物品•支付•注册帐号•登录•登出•订单审核

示例应用还具有以下非功能性要求:

•必须具有高可用性,并且必须自动扩展以满足不断增长的流量(并在流量减少后再缩减)。•提供易于使用的运行状态监视和诊断日志,以帮助解决遇到的问题。•它应该支持敏捷开发,包括对持续集成和部署(CI/CD)的支持。•除了支持传统的Web前端和SPA Web前端,该应用程序还必须支持不同系统的移动客户端应用程序。•支持跨平台托管和跨平台开发


Web或移动客户端通过HTTPS访问ASP.NET Core MVC服务器程序或API网关程序

API网关具有多种优势,例如将后端服务与各个前端客户端解耦,并提供更好的安全性。

该应用程序还利用了BFF模式(服务于前端的后端),该模式建议为每个前端客户端创建单独的API网关。

上面的体系图演示了基于请求是来自Web客户端还是来自移动客户端的API网关


示例应用的功能被分解为许多不同的微服务:

•负责身份验证和身份•列出产品目录中的商品•购物车管理以及订单管理。这些独立的服务都有其自己的持久化存储,没有可以与所有服务交互的单个主数据存储,
服务之间的协调和通信是通过消息总线来完成的。


每个微服务根据其各自的需求独立设计。因此它们的技术堆栈是可以不同的(目前服务均是.NET构建并为云设计)。

简单的服务提供了基本的创建、读取、更新、删除访问(CRUD),而更高级的服务则使用领域驱动设计方法和模式来管理业务复杂性。

代码结构

因为eShopOnContainers示例程序使用微服务,其GitHub存储库中包含许多独立的项目文件。
除了独立的项目方案和可执行文件之外,各种服务还被设计为在独立的容器中运行。

下图显示了完整的Visual Studio解决方案,管理组织了各种不同的项目。

该代码被组织为支持不同的微服务,并且在每个微服务中,代码分为领域逻辑、基础设施以及用户界面/服务端点。

Ref

•  https://docs.microsoft.com/en-us/dotnet/architecture/cloud-native/introduce-eshoponcontainers-reference-app•  https://github.com/dotnet-architecture/eShopOnContainers

更多干货及最佳实践分享
关注并星标我们

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/304637.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

爬取猎聘python_爬取猎聘大数据岗位相关信息--Python

猎聘网站搜索大数据关键字,只能显示100页,爬取这一百页的相关信息,以便做分析。__author__ ‘Fred Zhao‘import requestsfrom bs4 import BeautifulSoupimport osimport csvclass JobSearch():def __init__(self):self.headers {‘User-Ag…

java string底层实现_Java-学习日记(Shell与String底层原理)

Java杂记-2020.08.07Test中测试所有getter,setter方法最近一周在写codereview,相关技术是kmock1.0.19,gradlebuild.gradle中配置文件testCompile pl.pojo:pojo-tester:0.7.6testCompile(junit:junit:4.12)testCompile(kmock:kmock:1.0.19)Test中的使用&a…

正态分布为什么常见?

统计学里面,正态分布(normal distribution)最常见。男女身高、寿命、血压、考试成绩、测量误差等等,都属于正态分布。>>>> 作者: 阮一峰以前,我认为中间状态是事物的常态,过高和过低…

Hibernate HQL 语法大全(上)

Hibernate配备了一种非常强大的查询语言,这种语言看上去很像SQL。但是不要被语法结构上的相似所迷惑,HQL是非常有意识的被设计为完全面向对象的查询,它可以理解如继承、多态 和关联之类的概念。 1.大小写敏感性问题 除了Java类与属性的名称外…

python tuple args_Python基本数据类型之tuple

一、创建元组:ages (11, 22, 33, 44, 55)ages tuple((11, 22, 33, 44, 55))元组和列表几乎一样元组的元素不可修改,但是元组元素的元素是可以修改的tuple(iterable),可以存放所有可迭代的数据类型二、基本操作:索引name_tuple …

轻量级Excel读取器ExcelReader

用户上传Excel文件,要求读取里面数据,其实可以很简单!新版Excel2007以上的xlsx文件,本质上是OpenXml格式,只需要解开压缩包然后读取内部Xml即可得到想要的数据。ExcelReader 用于快速读取单Sheet的Excel数据&#xff0…

java代码实现链表_java单链表代码实现

用惯了C,java写起来果然不太爽。。。不废话了,上代码。。。package javaInnerclassDemo;class Link{class Node{private String name;private Node next;public Node(String name){this.namename;}public void setname(String name){this .name name;}p…

Python 写各大聊天系统的屏蔽脏话功能原理

来源:Cookie-Fei www.cnblogs.com/cookie1026/p/6121363.html突然想到一个视频里面弹幕被和谐的一满屏的*号觉得很有趣,然后就想用python来试试写写看,结果还真玩出了点效果,思路是首先你得有一个脏话存放的仓库好到时候检测&…

RHEL4- SAMBA服务(四)在x-window下图形界面简单搭建samba服务器

RHEL4- SAMBA服务(四)在x-window下图形界面简单搭建samba服务器在《RHEL4- SAMBA服务(一)samba服务的安装与启动》中我讲了如何安装和启动samba服务器,这一篇我来说一说如何使用图形界面配置简单的samba服务&#xff0…

通过图书编号查询python_文字版图书管理-python练习

"""2020-06-01 Python 打卡1、根据下面运行流程图和提示,实现文字版图书管理功能。提示:主体流程代码已实现如下,三个功能分别用函数来实现.每本图书用一个字典来存储:book1 {id:编号,name:书名&#x…

mvc identity连接mysql_asp.net MVC5,如何使用mysql数据库,使用MVC框架中自带的identity用户验证体系...

问题如题现在很多时候,即使是.net项目,我们用的数据库也未必时是 SQL Server了。但很多VS 自带的框架(如MVC 、WebAPI等框架)中的示例自带的仍然是默认Sql Server的,而且并不一定好改成别的数据库。这有时候就很苦恼。比如.net MVC框架中自带…

Dapr 知多少 | 分布式应用运行时

IntroDapr 官方团队已于最近(2021.2.17)正式发布Dapr v1.0,Dapr已正式生产可用,可以部署到自托管环境或 Kubernetes 集群。对于绝大多数开发者来说,想必对Dapr只是有所耳闻,而具体是什么(What&a…

使用.NET中的XML注释(一) -- XML注释标签讲解

一.摘要 .Net允许开发人员在源代码中插入XML注释,这在多人协作开发的时候显得特别有用。 C#解析器可以把代码文件中的这些XML标记提取出来,并作进一步的处理为外部文档。 这篇文章将展示如何使用这些XML注释。 在项目开发中,很多人并不乐意写…

pythonpil库过滤图像contour_一秒钟带你走进P图世界-----(python)PIL库的使用

python-----PIL库的使用一、什么是PIL库1.PIL(Python Image Library)库是python语言的第三方库,具有强大的图像处理能力,不仅包含了丰富的像素、色彩操作功能,还可以用于图像的归档和批量处理能力。2.PIL库主要有2个方面的功能:(1…

mysql tddl_TDDL思考总结

单机数据库分布式数据库TDDL原理与最佳实践1. 数据库的结构1.1. KV存储(id是K)1.2. B树与红黑树B树的特点是叶子节点是块状,一个叶子里面有多个数据,相邻数据是存在一起的,123,456起等,而磁盘也是按块的,B树…

c# winform中窗体切换后释放及防止重复生成

问题1:窗体切换后如何关闭,并释放资?c# winform中,2个窗体,form1和form2,互相切换的时候执行this.Hide(); Form2 form2 new Form2();form2.Show();此时你会发现当Form2显现时,Form1隐藏了,但当你关闭Form2时,其进程并…

2018程序员必备碎片化学习工具(年度精选)

2017马上就要过去了,2018来了。工作、生活节奏超快的今天,想要不断提升自我,碎片化阅读学习是你最佳的选择,如果你有一颗学习的心,那这些学习型的公众号,绝对会让你受益匪浅。小编为你精选了技术领域几个精…

mfc 找到字符串中字符_[LeetCode] 467. 环绕字符串中唯一的子字符串

题目链接: https://leetcode-cn.com/problems/unique-substrings-in-wraparound-string难度:中等通过率:35.6%题目描述:把字符串 s 看作是"abcdefghijklmnopqrstuvwxyz"的无限环绕字符串,所以 s 看起来是这样的&#xf…

ntopng mysql_网络流量监控工具与分析Ntop和Ntopng

Ntop工具NtopNtop是一种监控网络流量工具,用ntop显示网络的使用情况比其他一些网络管理软件更加直观、详细。Ntop甚至可以列出每个节点计算机的网络带宽利用率。Ntop工作方式1. 命令行界面2. web界面Ntop的功能1. 可以自动从网络中获取有用的信息2. 可以将获取的数据…

oracle express介绍

Oracle express 不是一种新型火车也不是一种新型的邮递服务。Oracle express是个多维的数据库和应用程序环境,这个应用程序环境是用来构建OLAP应用程序的。Express的组件(或者OLAP选项)是维(多维部分中的一部分)和变量…