图书前言

前 言

这一天已经到来——当前大量软件和服务的开发者们正在迫不及待地拥抱微服务,微服务带来了伸缩性、容错性和缩短产品上市时间等方面的各项好处。

微服务不仅是一项吸引眼球的新鲜事物,其背后的驱动力和基础概念更重要,那些对于小型、独立部署的模块的态度摇摆不定的人们将会掉队。

现在,我们需要具备一种能够开发具有柔韧性、可弹性伸缩的应用的能力;而且开发过程要快速,才能满足客户需求并在竞争中保持领先。

《ASP.NET Core微服务实战》中的开发过程

与其他一些只是逐一介绍编程语言的各个API、类库和语法模式的参考书风格的书籍不同,《ASP.NET Core微服务实战》希望用作微服务开发指南,而ASP.NET Core只是我们在编写示例代码时选用的框架。

《ASP.NET Core微服务实战》不讲解底层C#代码的所有细节;如果你需要这方面的知识,可参考其他作者所编写的书籍。我期望你在学完《ASP.NET Core微服务实战》后,基本能够基于ASP.NET Core创建、测试、编译和部署微服务,能够习得良好而实用的习惯,能快速开发稳定、安全、可靠的服务。

我希望你通过阅读《ASP.NET Core微服务实战》能够学到大量方法,来开发部署在可弹性伸缩、高性能的云环境中的服务。使用C#的ASP.NET Core只是众多可用于开发微服务的语言和框架之一,但编程语言并不构成服务——唯有你才能造就服务。相比于一种特定的语言和工具,在服务开发期间你的努力、专心和勤奋,才是真正能保障服务投产后获得成功的因素。

画笔和画布本身并不成画,唯有画家才能画成。你就是微服务的画家,而 ASP.NET Core 则是众多画笔之一。

在《ASP.NET Core微服务实战》中,我们首先讨论适用于任意服务的基本结构,接着介绍它们如何构成强大而健壮的服务。我们将连接数据库和各种后端服务,使用轻量级分布式缓存、安全服务以及 Web 应用,同时会时刻注意以 Docker 镜像形式持续地交付不可变发布物的能力。

为什么要开发微服务

由于需求、出发点和对成功的度量标准的不一致,不同团队的发布周期也不一致。依赖手工配置的定制服务器才能正常运行的单体开发时代已经过去了。

微服务,只要正确实施,我们就可从中获得敏捷性,并大幅缩短产品上市时间,而这正是企业在新时代里生存和发展所需的。在这个新时代,不管哪个领域,都需要让软件上云以获取利润。

在阅读《ASP.NET Core微服务实战》的过程中,你将能了解每个决定背后的各项考量。从每一行代码到上层架构的“简图”,我们会详细讨论其优劣。

微服务开发的准备工作

首先,也是最重要的一点,你将需要 .NET Core 命令行工具,并安装正确的软件开发工具包(Software Development Kit, SDK)。第1章将介绍如何配置它们。

接着,我们将用到Docker。Docker以及支持它的底层容器技术现在已经全面普及了。不管目标部署平台是亚马逊云(AWS)、微软Azure、Google云平台(Google Cloud Platform, GCP),还是自有基础设施,Docker 都能提供我们所期盼的可移植、不可变发布物。

《ASP.NET Core微服务实战》微服务的开发、构建流水线是由Docker容器创建的,而这些容器则运行于云环境的Linux基础设施中。这种情况下,读者在使用《ASP.NET Core微服务实战》时最顺畅的路径是基于macOS或 Linux的机器。使用 Windows 也是没有问题的,不过在某些部分可能显得不够顺畅,或者需要额外步骤。Windows 10 上新的 Linux 子系统可缓解一部分问题,不过仍然不够理想。

Windows和macOS上的Docker要使用虚拟机来托管 Linux 内核,因此,如果内存不足,就可能导致机器变慢。

如果使用 Linux(《ASP.NET Core微服务实战》代码在 Ubuntu 上验证通过),那么不需要任何虚拟机,因为 Docker 直接运行于 Linux 内核之上。

在线资源

? 微软网站(https://www.microsoft.com/net/core/)

? 《ASP.NET Core微服务实战》的GitHub库(https://github.com/microservices-aspnetcore)

示例代码

《ASP.NET Core微服务实战》的补充材料(示例代码、练习素材等)可在此处下载:https://github.com/microservices-aspnetcore。

《ASP.NET Core微服务实战》就是为了帮你完成工作。你通常可在程序或者文档中使用《ASP.NET Core微服务实战》提供的代码,不需要与我们取得联系获得许可,但如果要复制大量的程序,或将书中的代码清单用于出售或用于复制光盘,就必须获得许可。可以引用《ASP.NET Core微服务实战》的内容或代码清单来解决其他问题,但在自己的产品文档中大量使用《ASP.NET Core微服务实战》的代码清单需要事先得到许可。

如果你觉得自己对示例代码的使用超出了合理情况或许可的范围,请随时联系我们,邮箱是 permissions@oreilly.com。

致谢

如果没有家人超常的耐心和包容,《ASP.NET Core微服务实战》不可能顺利付梓。他们的支持是能让《ASP.NET Core微服务实战》从概念到成功出版的唯一动力。我难以想象他们如何在我把大量时间投入《ASP.NET Core微服务实战》之后,还能忍受我的紧张和怪异,以及凌乱的旅行和日常工作安排。

对于一本像《ASP.NET Core微服务实战》这样的书,其中的每一个章节、每一个示例,都需要投入大量时间进行编码、测试和研究,咨询专家,以及苦思冥想。我要向积极参与和运用.NET Core 技术的开源社区,尤其是来自微软的技术讲师和开发者们表达深深的谢意。

最后,与以往一样,我一定要感谢 A-Team 的其他成员(Dan、Chris 和 Tom),他们持续的灵感让编程充满乐趣。