最近,我将《ASP.NET Core 微服务实战》一书由英文翻译为中文。这本书是由清华大学出版社引进的,目前还处于最后的排版校对过程中,现将该书的译者序发表于此。

以下为译者译全文:

“微服务”的概念在 2014 年正式提出之后,越来越多的团队开始用它来设计自己的业务系统,各种微服务框架和开发过程管理方法也同时兴起、不断成熟。微服务设计方法清晰地定义了各个开发团队的业务边界,微服务框架以不同的方式实现了服务之间的协作与集成,根据康威定律我们可以推导这样一种产品开发方法必然会映射到人员协作方式上去。还有同步兴起的 DevOps 运动,它及时恰当地补齐了微服务开发过程中的技术方法,让微服务生态如虎添翼。

经过几年的积累,人们开始意识到,微服务从概念到实现,最后推广到整个组织,这整个过程期间存在大量的挑战:服务之间的依赖管理、大量服务实例的运维、单个服务的独立部署,以及承担不同角色的微服务在同一个生态系统中的身份认证等,都开始成为微服务团队需要直接面对的挑战。与此同时,各类微服务框架也层出不穷,让开始接触微服务的开发人员眼花缭乱,既难以区分它们的优劣、做出合适的选型,又难以找到高效的学习路径。

在 .NET 技术领域,微服务的挑战比起很多其他技术栈有过之而无不及。.NET 技术在企业应用开发领域有着长久的运用,因此有大量的存量应用需要面向服务化改造。而 .NET Core 技术作为新一代 .NET 技术方向,无论是这一技术生态自身的完整性,还是基于它的微服务框架体系,都处于持续的完善之中。最后,在传统的企业应用开发领域,并没有普遍采用持续交付等实践,当时所开发的应用也难以满足云原生应用所要求的诸多特性,因此改造过程难度较大。

所幸 .NET Core 作为全新的 .NET 技术,它不仅完全开源、跨平台,更面向云原生开发进行了大量而细致的优化。它完全模块化,不依赖特定操作系统,同时其文件系统、网络和配置等基础功能模块对跨平台、命令行等现代化轻量级开发所要求的特性提供了优秀的支持。正是由于 .NET Core 作为基础开发平台天然适合云原生开发,因此基于 ASP.NET Core 开发微服务也天然具有这些优势。

本书“麻雀虽小,五脏俱全”,它从 .NET Core 开发环境安装开始,紧接着详细介绍了持续交付、API 优先和测试驱动等重要开发方法和思想。本书探讨了人们对微服务的各种理解,以实际项目从各方面体现出本书作者对微服务的全方面诠释,引导读者在直观的体验中建立自己的理解;同时,本书还主张把微服务和云原生实践结合运用,书中通过解析十二因子应用的各项特性,并分析它们在本书示例项目中的体现,让读者对微服务和云原生的结合更为体系化。在本书的讲解过程中,每当遇到可能存在不同做法的场景,作者总是详细论述各项考量、仔细比较各种可能的做法,引发读者思考;同时,本书还大量探讨了传统应用开发中的典型做法,以及在微服务和云原生开发时应该采纳的新方法,仔细解析其中缘由,为存量应用的改造提供了直接指导。

译者说明

在本书英文原版写作时,.NET Core 还处于早期的 1.1 版本,而现在中文版翻译期间,.NET Core 的最新版已经是 2.2 版了。为了让读者在基于最新版 .NET Core 练习书中的示例项目时更为顺畅,译者对书中所涉及的示例代码进行了升级。在升级过程中,部分代码需要经过改写才能与新版本的运行时或者依赖模块配合工作。读者在使用书中的代码时,请自行将书中所涉及的 GitHub 仓库地址由 https://github.com/microservices-aspnetcore 替换为 https://github.com/microservices-aspnetcore-zh ,在使用 Docker 镜像的方式运行示例项目时,将书中的 Docker 镜像由 dotnetcoreservices 前缀替换为 dotnetcoreserviceszh。如果使用翻译版的代码遇到问题,请在这些 GitHub 仓库中提交 issue,译者将乐意为读者解答各类常见问题。

限于作者水平等各方面原因,本书在翻译时难免留下一些纰漏与错误,如承蒙读者指正,则译者将倍感荣幸,其他读者也将一起获益。请访问本书中文版代码仓库 https://github.com/microservices-aspnetcore-zh 或者使用电子邮件 jijie.chen@outlook.com 与译者取得联系。

致谢

本书中文版的引进必将为 .NET 技术领域的微服务实践和云原生技术的普及做出重要贡献。在此,译者特此感谢清华大学出版社的大力支持,感谢张善友老师为本书译文提出的宝贵建议,感谢曾一起共事的翻译小组 WorkSharp 的同事们、特别是刘夏先生的指导,感谢社区中关注本书的各位热心人士的激励和帮助。最后,最需要致以真诚感谢的,是时常关心我的翻译工作、提醒我及时休息的父母;以及忍受我用几个月的业余时间来翻译、却仍然要在翻译时随时提供参谋的爱人张圣奇:是你们无限的耐心和持续的支持才让本书的翻译工作得以顺利完成。