.NET微服务最佳实践eShopOnContainers

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 微软与社区专家合作,开发了功能齐全的云原生微服务示例应用eShopOnContainers。该应用旨在展示使用.NET、Docker以及可选的Azure,Kubernetes技术来构建电商平台。

功能 & 要求


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


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


列出商品目录

按类型过滤商品

按品牌过滤商品

将商品添加到购物车

编辑或删除购物车中的物品

支付

注册帐号

登录

登出

订单审核


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


必须具有高可用性,并且必须自动扩展以满足不断增长的流量(并在流量减少后再缩减)。

提供易于使用的运行状态监视和诊断日志,以帮助解决遇到的问题。

它应该支持敏捷开发,包括对持续集成和部署(CI/CD)的支持。

除了支持传统的Web前端和SPA Web前端,该应用程序还必须支持不同系统的移动客户端应用程序。

支持跨平台托管和跨平台开发


8345a349937bd8fa2530f8c4dd04302a.png


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


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


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


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


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


负责身份验证和身份

列出产品目录中的商品

购物车管理以及订单管理。这些独立的服务都有其自己的持久化存储,没有可以与所有服务交互的单个主数据存储,


服务之间的协调和通信是通过消息总线来完成的。


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

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


2bbee9db4ae054647c637b362fb4da53.png


代码结构


因为eShopOnContainers示例程序使用微服务,其GitHub存储库中包含许多独立的项目文件。


除了独立的项目方案和可执行文件之外,各种服务还被设计为在独立的容器中运行。

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


f271d2d38791511831eb1d5cf7d094e3.png


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

相关文章
|
4天前
|
运维 监控 Go
Go语言微服务实战与最佳实践
【2月更文挑战第14天】本文将深入探讨使用Go语言进行微服务实战中的最佳实践,包括服务拆分、API设计、并发处理、错误处理、服务治理与监控等方面。通过实际案例和详细步骤,我们将分享如何在Go语言环境中构建高效、稳定、可扩展的微服务系统。
|
6月前
|
数据管理 测试技术 API
如何从单体架构迁移到微服务架构:挑战和最佳实践
如何从单体架构迁移到微服务架构:挑战和最佳实践
128 0
|
4天前
|
监控 持续交付 Docker
使用Docker进行微服务架构的最佳实践
【5月更文挑战第10天】本文探讨了使用Docker实施微服务架构的最佳实践。首先,理解微服务架构是拆分小型独立服务的模式,借助Docker实现快速部署、高可移植性和环境一致性。Docker的优势在于服务扩展、容器编排、自动化构建与部署。最佳实践包括:定义清晰服务边界,使用Dockerfile和Docker Compose自动化构建,利用Docker Swarm或Kubernetes编排,实施服务发现和负载均衡,监控与日志记录,以及持续集成和持续部署。Docker虽重要,但需与其他技术结合以确保系统整体稳定性。
|
4天前
|
消息中间件 数据管理 持续交付
构建高效微服务架构的最佳实践
【5月更文挑战第6天】在动态和快速演变的现代软件开发领域,微服务架构已经成为促进敏捷开发和部署的关键模式。本文将深入探讨构建和维护高效微服务架构的策略,包括服务划分准则、通信机制、数据管理及持续集成与持续交付(CI/CD)的实施。通过分析不同业务场景下的应用案例,本文旨在为开发者提供一套行之有效的指导原则和实践方法,以支持他们构建可扩展、灵活且高效的微服务系统。
100 2
|
4天前
|
消息中间件 数据库 开发者
构建高效微服务架构:后端开发的最佳实践
【4月更文挑战第30天】在现代软件开发中,微服务架构已成为一种流行且有效的方法,它能够提高系统的可扩展性、弹性和维护性。本文将探讨后端开发中构建微服务架构的关键要素,包括服务划分、通信机制、数据一致性和容错处理。通过深入分析这些要素,我们将提供一系列最佳实践,帮助开发者构建一个高性能、可维护的微服务系统。
|
4天前
|
消息中间件 监控 微服务
【专栏】随着技术发展,未来将探索服务网格、容器化和云原生技术,以提升微服务架构的效能
【4月更文挑战第27天】本文探讨了构建高效微服务架构的后端开发最佳实践。微服务以服务独立、去中心化、自治和轻量级通信为核心原则,带来可扩展性、独立性、技术灵活性和团队协作优势。实践中,要注意服务拆分粒度、选择合适的通信协议(如RESTful、RPC、消息队列)、处理数据一致性与分布式事务、实施服务治理和监控,以及确保安全性与权限控制。随着技术发展,未来将探索服务网格、容器化和云原生技术,以提升微服务架构的效能。
|
4天前
|
监控 测试技术 持续交付
探索现代微服务架构的最佳实践
【4月更文挑战第25天】 随着软件开发领域不断演进,微服务架构已成为设计灵活、可扩展且高度可维护系统的首选方案。本文将深入探讨构建和部署微服务时的关键最佳实践,涵盖从服务划分原则到持续集成/持续部署(CI/CD)的流程,再到监控与日志记录的策略。我们的目标是为开发者提供一套实用的指南,帮助他们在构建未来的应用程序时做出明智的架构选择,并确保这些系统能够快速响应市场和技术的变化。
|
4天前
|
Kubernetes API 持续交付
构建高效微服务架构:后端开发的最佳实践
【4月更文挑战第25天】 在当今快速演变的技术景观中,微服务架构已成为组织追求敏捷性、可扩展性和技术灵活性的重要策略。本文深入探讨了构建高效微服务架构的关键步骤和最佳实践,涵盖了服务划分原则、容器化部署、API网关设计以及持续集成与交付等方面。通过综合分析,旨在为后端开发人员提供一套实用的指南,帮助他们在面对复杂系统时能够做出明智的决策,并实现高性能、低耦合的服务架构。
|
4天前
|
存储 设计模式 持续交付
构建高效微服务架构的最佳实践
【4月更文挑战第23天】 在当今快速演进的软件开发领域,微服务架构已成为实现敏捷、可扩展和灵活应用的关键方式。本文将深入探讨如何构建一个高效的微服务系统,从选择合适的技术栈到设计模式的应用,再到持续集成与部署的实践。我们将通过具体案例分析和性能优化技巧,为开发者提供一系列可靠的最佳实践指南,帮助团队克服常见的挑战,打造高性能、易于维护的微服务应用。
48 0
|
4天前
|
监控 负载均衡 API
构建高性能微服务架构:后端开发的最佳实践
【4月更文挑战第14天】 在当今快速发展的软件开发领域,微服务架构已成为构建可扩展、灵活且容错的系统的首选方法。本文深入探讨了后端开发人员在设计和维护高性能微服务时需要遵循的一系列最佳实践。我们将从服务划分原则、容器化部署、API网关使用、负载均衡、服务监控与故障恢复等方面展开讨论,并结合实际案例分析如何优化微服务性能及可靠性。通过本文的阅读,读者将获得实施高效微服务架构的实用知识与策略。