
EDITION v7.0 - 已更新到 ASP.NET Core 7.0
有关书籍更新和社区贡献,请参阅 更改日志 。
本指南介绍了如何使用容器开发基于微服务的应用程序和管理它们。 本文讨论使用 .NET 和 Docker 容器的体系结构设计和实现方法。
为便于入门,本指南重点介绍可探索的参考容器化和基于微服务的应用程序。 引用应用程序在 eShopOnContainers GitHub 存储库中提供。
企业越来越多地实现成本节约、解决部署问题,以及使用容器改进 DevOps 和生产运营。 Microsoft通过创建 Azure Kubernetes 服务和 Azure Service Fabric 等产品,并与 Docker、Mesosphere 和 Kubernetes 等行业领导者合作,为 Windows 和 Linux 发布容器创新。 这些产品提供容器解决方案,可帮助公司以云速度和规模(无论选择的平台或工具如何)构建和部署应用程序。
Docker 正在成为容器行业事实上的标准,受 Windows 和 Linux 生态系统中最重要的供应商支持。 (Microsoft是支持 Docker 的主要云供应商之一)。 将来,Docker 可能无处不在,位于云或本地的任何数据中心。
此外, 微服务 体系结构正在成为分布式任务关键型应用程序的重要方法。 在基于微服务的体系结构中,应用程序基于可独立开发、测试、部署和版本控制的服务集合构建。
本指南介绍了如何使用容器开发基于微服务的应用程序和管理它们。 本文讨论使用 .NET 和 Docker 容器的体系结构设计和实现方法。 为了更轻松地开始使用容器和微服务,本指南重点介绍可探索的参考容器化和基于微服务的应用程序。 示例应用程序在 eShopOnContainers GitHub 存储库中提供。
本指南主要在开发环境级别提供基础开发和体系结构指南,重点介绍两种技术:Docker 和 .NET。 我们的目的是在考虑应用程序设计时阅读本指南,而无需专注于生产环境的基础结构(云或本地)。 创建生产就绪的应用程序时,稍后将就基础结构做出决策。 因此,本指南旨在不依赖特定基础结构,而更加侧重开发环境。
学习本指南后,下一步是了解 Microsoft azure 上的生产就绪微服务。
本指南已修订,以涵盖 .NET 7 版本以及许多附加更新,这些更新涉及与 .NET 7 版本同步的相同技术浪潮(即 Azure 和其他第三方技术)。
备注
正在为 .NET 8 和新的 eShop 示例创建此电子书的新版本。
本指南不侧重于应用程序生命周期、DevOps、CI/CD 管道或团队工作。 补充指南 Containerized Docker Application Lifecycle with Microsoft Platform and Tools(使用 Microsoft 平台和工具的容器化 Docker 应用程序的生命周期)重点介绍该主题。 当前指南也不提供有关 Azure 基础结构的实现详细信息,例如有关特定业务流程协调程序的信息。
我们为不熟悉基于 Docker 的应用程序开发和基于微服务的体系结构的开发人员和解决方案架构师编写了本指南。 若要了解如何使用 Microsoft 开发技术(特别关注 .NET)和 Docker 容器构建、设计和实现概念证明应用程序,本指南适用于你。
如果你是一名技术决策者(例如企业架构师),并且希望在决定为新式分布式应用程序选择哪种方法之前,了解架构和技术概览,那么你会发现本指南非常有价值。
本指南的第一部分介绍了 Docker 容器,讨论如何在 .NET 7 和 .NET Framework 之间进行选择作为开发框架,并提供微服务的概述。 此内容适用于需要概述但不需要专注于代码实现详细信息的架构师和技术决策者。
本指南的第二部分从 “基于 Docker 的应用程序的开发过程 ”部分开始。 它重点介绍使用 .NET 和 Docker 实现应用程序的开发和微服务模式。 本部分对希望专注于代码和模式和实现详细信息的开发人员和架构师最感兴趣。
eShopOnContainers 应用程序是适用于 .NET 和微服务的开源参考应用,旨在使用 Docker 容器进行部署。 该应用程序由多个子系统组成,包括多个 e-store UI 前端(Web MVC 应用、Web SPA 和本机移动应用)。 它还包括所有所需服务器端操作的后端微服务和容器。
应用程序的目的是展示体系结构模式。 这不是用于启动真实应用程序的 PRODUCTION-READY 模板。 事实上,该应用程序处于永久测试版状态,因为它还用于测试新出现的潜在有趣技术。
本书和相关示例不断发展,因此欢迎你的反馈。 如果你正在 <learn.microsoft.com> 上阅读这本书,并且有关于这本书的改进建议,请使用页面底部的反馈部分:
如前面的屏幕截图中突出显示的那样,反馈部分允许你提交以下反馈:
- 本产品:使用 .NET 产品反馈表单。
- 此页面:使用包含页面详细信息的 GitHub 问题模板。
如果要以 PDF 形式阅读这本书,可以通过创建新的 .NET Docs:GitHub 问题 或使用 .NET 体系结构电子书:GitHub 问题模板来提交反馈。
共同作者:
Cesar de la Torre, Sr. PM, .NET 产品团队, Microsoft Corp.
比尔瓦格纳,高级内容开发人员,C+E,Microsoft公司。
DevDiv CAT 团队首席软件工程师 Mike Rousos,Microsoft
编辑:
迈克·波普
史蒂夫·霍格
参与者和审阅者:
Jeffrey Richter,软件工程师合伙人,Azure团队,Microsoft
Jimmy Bogard,Headspring 的首席架构师
Udi Dahan,创始人和首席执行官,特定软件
Jimmy Nilsson,Factor10 的联合创始人兼首席执行官
格伦·康德龙,ASP.NET 团队高级项目经理
Mark Fussell,首席 PM 主管,Azure Service Fabric 团队,Microsoft
Diego Vega,PM 主管,实体框架团队,Microsoft
巴里·多兰斯,高级安全项目经理
罗文·米勒,高级项目经理,Microsoft
Ankit Asthana,首席 PM 经理,.NET 团队,Microsoft
斯科特·亨特,.NET 团队合作伙伴总监,Microsoft
Nish Anil,高级项目经理,.NET 团队,Microsoft
迪伦·雷森伯格,波利的建筑师和开发主管
Steve “ardalis” Smith - 软件架构师和教练 - Ardalis.com
Ian Cooper,Brighter 的编码架构师
Unai Zorrilla,普通概念的架构师和开发主管
Eduard Tomas, Dev Lead at Plain Concepts
Ramon Tomas,普通概念的开发人员
David Sanz,普通概念的开发人员
格鲁波索鲁蒂奥首席运营官哈维尔·瓦莱罗
皮埃尔·米勒,高级顾问,Microsoft
Michael Friis,产品经理,Docker Inc
Charles Lowell,软件工程师,VS CAT 团队,Microsoft
软件开发工程师 Miguel Veloso 就职于 Plain Concepts
苏米特·戈什,诺伊迪西奇首席顾问
发布者
Microsoft开发人员部门、.NET 和 Visual Studio 产品团队
Microsoft公司的一个部门
微软路一号
雷德蒙德, 华盛顿 98052-6399
版权 © 2023 归属于微软公司
保留所有权利。 在未经出版商的书面许可的情况下,不得以任何形式或任何方式转载或传输这本书的内容。
本书“按原样”提供,表达作者的观点和看法。 本书中表达的观点、意见和信息(包括 URL 和其他 Internet 网站参考)可能会更改而不通知。
此处描述的一些示例仅用于说明,并且是虚构的。 无意与任何现实情况关联,也不应作此推测。
Microsoft 和“商标”网页中编号为 https://www.microsoft.com 的商标是 Microsoft 集团公司的商标。
Mac 和 macOS 是 Apple Inc 的商标。
Docker鲸鱼徽标是Docker公司注册的商标,已获得授权使用。
所有其他标记和徽标都是其各自所有者的财产。