.NET微服务最佳实践eShopOnContainers

共 1702字,需浏览 4分钟

 ·

2021-03-05 18:56


本文翻译自微软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


往期精彩回顾




【推荐】.NET Core开发实战视频课程 ★★★

.NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划

【.NET Core微服务实战-统一身份认证】开篇及目录索引

Redis基本使用及百亿数据量中的使用技巧分享(附视频地址及观看指南)

.NET Core中的一个接口多种实现的依赖注入与动态选择看这篇就够了

10个小技巧助您写出高性能的ASP.NET Core代码

用abp vNext快速开发Quartz.NET定时任务管理界面

在ASP.NET Core中创建基于Quartz.NET托管服务轻松实现作业调度

现身说法:实际业务出发分析百亿数据量下的多表查询优化

关于C#异步编程你应该了解的几点建议

C#异步编程看这篇就够了


浏览 51
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报