零、前言

这本书的目的是让你对现代软件开发中的微服务有一个广泛的了解,同时也用具体的例子来深入了解更多的细节.NET Core 应用接口。这本书涵盖了微服务的理论,然后是对用于开发虚拟应用的模式的高级理解,其中我们将涵盖解决方案中使用的概念,这些解决方案可以轻松配置为在云中或内部运行。

值得注意的是,微服务架构确实具有关键优势,尤其是在支持敏捷改进和复杂风险应用的传输方面。

然而,对于如何在微软生态系统中实现微服务,尤其是如何利用 Azure 和.NET Core 框架。这本书试图填补这一空白。

虽然微服务架构的许多方面不需要详细的解释,但我们试图总结这些概念,并提供微软文档链接供进一步阅读。在本书中,在我们开始开发我们想象中的应用之前,我们将涵盖开发基于微服务架构的应用所需的每一部分。

从一个简单的应用编程接口项目和整体应用开始,这本书描述了您可以执行的过渡到微服务的各种步骤。为了使代码示例更简单,本书使用了.NET Core 应用接口。最后一章包括一个应用,显示了整本书的关键。

这本书是给谁的

本书的目标读者包括希望在 Azure 云中找到设计高性能应用的一站式最佳实践的应用开发人员。这本书适用于 Azure 的所有开发者。它还面向希望了解和理解微服务体系结构并在其.NET Core 应用。这本书的编写/更新方式涵盖了从新手到高级用户。对于完全不熟悉微服务或者对这种体系结构方法只有理论上的了解,并且希望获得实用视角以便更好地管理其应用复杂性的开发人员来说,这是理想的选择。

这本书涵盖了什么

第 1 章微服务简介,讨论了微服务的基础,回顾了一个整体应用,并揭示了它的局限性。您还将学习如何开始向微服务架构过渡。

第 2 章重构整块,讨论应用的当前堆栈。它还包括的功能.NET Core 和 C#8,演示了如何实现独立的微服务,并研究了微服务之间的通信。

第三章服务间的有效通信,涵盖了服务间的通信,包括同步和异步通信,以及 Azure 服务总线的概述。此外,本章借助于集成模式检查集成。在概述 Azure 服务结构之后,我们将了解 Docker 和容器,以及 Azure Kubernetes 服务、物联网集线器和物联网边缘的概述。

第 4 章用微软单元测试框架测试微服务,涵盖了各种类型的服务及其差异。在这里,您将使用微软单元测试框架、Moq 和 ASP.NET Core 应用编程接口实现测试方法。

第 5 章使用 Docker 部署微服务,涵盖了部署范例并解释了部署术语。

第 6 章使用 Azure Active Directory 保护微服务揭示了通过使用 Azure Active Directory 部署示例应用来保护微服务的概念。

第 7 章监控微服务,涵盖仪器仪表和遥测,其次是监控策略、日志记录和云中监控。

第 8 章使用 Azure 扩展微服务,探讨可扩展性、基础架构扩展和微服务扩展。本章还概述了 Azure Redis 缓存。

第 9 章反应式微服务介绍,借助代码示例为大家介绍反应式微服务。

第 10 章设计模式和最佳实践,涵盖了帮助构建微服务的高级模式,以及聚合器、DDD、API 网关、共享数据微服务模式、反腐败层模式和 BFF。

第 11 章构建微服务应用,研究了开发真实应用的各种方法。

第 12 章微服务架构总结着眼于未来应用如何通过遵循微服务方法而发展。

附录,解释了 API 网关模式和后端到前端模式的优缺点,帮助我们了解它们的最佳实践。

充分利用这本书

本书假设您对 SOA、RESTful web 服务、API、服务器/客户端体系结构有一定的了解.NET Core、ASP.NET Core 和 C#。本书涵盖了高级主题、基本概念以及 Kubernetes 和 IoT Edge 等技术的概述。这本书的内容旨在帮助您开始开发基于微服务的应用。也可以作为综合指南。使用工具箱类比,这本书为现代应用开发人员提供了大量的工具,从低级代码设计发展到更高级的体系结构,以及当今基于微服务的应用开发中常用的重要概念、模式和最佳实践。

本书将涵盖以下要点:

  • 微服务的细节,包括整体与 SOA 和微服务架构的深入细节
  • 使用 C#8 和 ASP.NET Core 3 的示例
  • 当前应用堆栈和通过虚拟应用开发微服务的新堆栈的概述
  • 使用演示应用深入讨论设计模式和最佳实践

您需要安装带有最新更新的 Visual Studio 2019(最好是社区版)。所有代码示例都使用进行了测试。Windows 操作系统上的. NET Core 3.1。然而,它们也应该适用于未来的版本发布。

| 书中介绍的软件/硬件 | 操作系统要求 | | ASP.NET Core 3.1 | Windows 操作系统 | | C# 8 | Windows 操作系统 | | SQL Server 2008R2 | Windows 操作系统 | | SQL Server 2017 | Windows 操作系统 |

如果您正在使用本书的数字版本,我们建议您自己键入代码或通过 GitHub 存储库访问代码(下一节中提供了链接)。这样做将帮助您避免任何与复制/粘贴代码相关的潜在错误。

Few of the code example uses Angular 8  to showcase the UI part. There is no code for these component as these are only for UI and you would require to setup Angular 8 on your Windows OS.

下载示例代码文件

你可以从你在www.packt.com的账户下载这本书的示例代码文件。如果您在其他地方购买了这本书,您可以访问www.packt.com/support并注册将文件直接通过电子邮件发送给您。

您可以按照以下步骤下载代码文件:

  1. 登录或注册www.packt.com
  2. 选择“支持”选项卡。
  3. 点击代码下载和勘误表。
  4. 在搜索框中输入图书的名称,并按照屏幕指示进行操作。

下载文件后,请确保使用最新版本的解压缩文件夹:

  • 视窗系统的 WinRAR/7-Zip
  • zipeg/izp/un ARX for MAC
  • 适用于 Linux 的 7-Zip/PeaZip

这本书的代码包也托管在 GitHub 上,网址为 https://GitHub . com/PacktPublishing/hand-On-microservice-with-CSharp-8-and-。网络核心 3 第三版。如果代码有更新,它将在现有的 GitHub 存储库中更新。

我们还有来自丰富的图书和视频目录的其他代码包,可在【https://github.com/PacktPublishing/】获得。看看他们!

下载彩色图像

我们还提供了一个 PDF 文件,其中包含本书中使用的截图/图表的彩色图像。可以在这里下载:https://static . packt-cdn . com/downloads/9781789617948 _ color images . pdf

使用的约定

本书通篇使用了许多文本约定。

CodeInText:表示文本中的码字、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟网址、用户输入和推特句柄。下面是一个例子:“前面的代码用预先指定的值声明了两个readonly属性。”

代码块设置如下:

Range book = 1..4;
var res = Books[book] ;
Console.WriteLine($"\tElement of array using Range: Books[{book}] => {Books[book]}");

当我们希望将您的注意力吸引到代码块的特定部分时,相关的行或项目以粗体显示:

private static readonly int num1=5;
private static readonly int num2=6;

任何命令行输入或输出都编写如下:

dotnet --info

粗体:表示一个新的术语,一个重要的单词,或者你在屏幕上看到的单词。例如,菜单或对话框中的单词像这样出现在文本中。下面是一个示例:“从管理面板中选择系统信息。”

Warnings or important notes appear like this. Tips and tricks appear like this.

取得联系

我们随时欢迎读者的反馈。

一般反馈:如果你对这本书的任何方面有疑问,在你的信息主题中提到书名,发邮件给我们customercare@packtpub.com

勘误表:虽然我们已经尽了最大的努力来保证内容的准确性,但是错误还是会发生。如果你在这本书里发现了一个错误,如果你能向我们报告,我们将不胜感激。请访问www.packt.com/submit-errata,选择您的图书,点击勘误表提交链接,并输入详细信息。

盗版:如果您在互联网上遇到任何形式的我们作品的非法拷贝,如果您能提供我们的位置地址或网站名称,我们将不胜感激。请通过copyright@packt.com联系我们,并提供材料链接。

如果你有兴趣成为一名作者:如果有一个你有专长的话题,你有兴趣写或者投稿一本书,请访问authors.packtpub.com

复习

请留下评论。一旦你阅读并使用了这本书,为什么不在你购买它的网站上留下评论呢?然后,潜在的读者可以看到并使用您不带偏见的意见来做出购买决定,我们在 Packt 可以了解您对我们产品的看法,我们的作者可以看到您对他们的书的反馈。谢谢大家!

更多关于 Packt 的信息,请访问packt.com