几乎所有的当代软件工程都专注于缩短产品的上市时间。微服务是一种以服务为导向的演进式体系结构模式, 它优雅地消除了组织摩擦, 让团队和工程师们拥有在不断地进行交付、迭代和改进时所需的自主权。可以预见,云原生时代的应用都是以微服务的形式出现。
关于微服务,有不少书籍堪称经典。但结合最新的Web框架ASP.NET Core来讲解微服务的书籍却不多。本书完整的介绍了使用ASP.NET Core进行微服务开发时的思路、步骤和工具,是一本不可多的的必读手册,本书由于成书较早,其示例代码所基于的.NET Core版本略显陈旧,译者的努力一定程度上弥补了这一问题。最重要的是,书中用大量篇幅讲述的关于开发功能强大且具有高伸缩性和韧性的微服务的思想不会过时的。另外,本书还关注使用ASP.NET Core实现云原生模式,以及要让应用成为云原生生态中的好公民需要关注的方方面面。这些在具体技术框架之外的经验与思考,更是弥足珍贵。
微服务开发并非只是将代码物理分离,开发过程中还要面对与微服务开发模式一同到来的服务集成、团队协作等一系列新挑战。相对于单体应用,开发人员之所以选择微服务,一个很重要的原因就是想通过一种能将服务独立地、快速地部署上线的能力。本书讲解了ASP.NET Core是如何通过与容器技术的无缝兼容轻松提供这一能力的。微服务的职责单一,这意味着服务之间需要相互调用才能完成多个任务,或者各方合力才能完成较大的任务。服务间的依赖与集成也是一项不可忽视的基本议题。基于事件集成,以及借助服务发现机制为相互依赖的服务提供灵活调度是两项常见的服务集成方法,本书对这两种方法都进行了完整介绍。由于各个后端服务未必直接面对用户,因此微服务系统中的安全认证也与直接面对用户的系统有所不同,本书深入讲解了几种常见的安全机制,供开发者根据实际情况选用。
与本书基于ASP.NET Core开发微服务的主题相呼应,ASP.NET Core本身就是一系列的模块化组件,可添加到现有应用中。同时,由于ASP.NET Core提供自宿主Web服务器对REST风格接口的支持非常友好,自身量级足够轻量并且性能强劲,因此ASP.NET Core自然适合作为微服务开发的基础框架。有了优秀的框架,接下来我们要考虑的是,如何避免再次陷入用一项新技术继续开发“新版本的一溜单体应用”。本书通过实际项目的深入演练,以及同步的理论讲解,让读者在面对微服务生态构建过程中的各种场景时,能做好充分准备。
不过我个人认为,这本书还是缺少了一部分关于微服务生态系统的内部编排的内容, 容器是微服务部署的最佳方式,容器作为现代基础设施上一种更细粒度的抽象,能有效降低占用空间和缩短启动时间、同时由于它提供了一种新的组件重用性级别,所以能轻松地集成到整个开发生态系统中(例如持续集成和交付生命周期),微服务生态治理包括调度(包括部署、复制、扩展、复活、重新调度、升级、降级等)、资源管理(内存、CPU、存储空间、端口、IP、镜像等)和服务管理(即使用标签、分组、命名空间、负载均衡和准备就绪检查将多个容器编排在一起)。
一直以来,在我运营的“dotnet跨平台”公众号和各种线上线下场合,我与很多朋友探讨和分享过微服务开发相关的经验。曾有很多朋友关心,有没有微服务相关的入门材料。这本书借助实际项目,系统地梳理了微服务开发的脉络,给初学者提供了行之有效的学习素材。所以本书的引进是以见值得高兴的事情。
书籍目录如下:
第1章 ASP.NETCore基础
1.1 核心概念
1.1.1 CoreCLR
1.1.2 CoreFX
1.1.3.NETPlatformStandard
1.1.4 ASP.NETCore
1.2 安装.NETCore
1-3开发控制台应用
1.4 开发第一个ASP.NETCore应用
1.4.1 向项目添加ASP.NET包
1.4.2 添加Kestrel服务器
1.4.3 添加启动类和中间件
1.4.4 运行应用
1.5 本章小结
第2章 持续交付
2.1 Docker简介
2.1.1 安装Docker
2.1.2 运行Docker镜像
2.2 使用Wercker持续集成
2.3 用Wercker构建服务
2.3.1 安装Wercker命令行工具
2.3.2 添加wercker.yml配置文件
2.3.3 运行Wercker构建
2.4 使用CircleCI持续集成
2.5 部署到dockerhub
2.6 本章小结
第3章 使用ASP.NETCore开发微服务
3.1 微服务的定义
3.2 团队服务简介
3.3 API优先的开发方式
3.3.1 为什么要用API优先
3.3.2 团队服务的API
3.4 以测试优先的方式开发控制器
3.4.1 注入一个模拟的仓储
3.4.2 完成单元测试套件
3.5 创建持续集成流水线
3.6 集成测试
3.7 运行团队服务的Docker镜像
3.8 本章小结
第4章 后端服务
4.1 微服务生态系统
4.1.1 资源绑定
4.1.2 服务间模型共用的策略
4.2 开发位置服务
4.3 优化团队服务
4.3.1 使用环境变量配置服务的URL
4.3.2 消费RESTful服务
4.3.3 运行服务
4.4 本章小结
第5章 创建数据服务
5.1 选择一种数据存储
5.2 构建Postgres仓储
5.2.1 创建数据库上下文
5.2.2 实现位置记录仓储接口
5.2.3 用EFCore内存提供程序进行测试
5.3 数据库是一种后端服务
5.4 对真实仓储进行集成测试
5.5 试运行数据服务
5.6 本章小结
……
第6章 事件溯源与CQRS
第7章 开发ASP.NETCoreWeb应用
第8章 服务发现
第9章 微服务系统的配置
第10章 应用和微服务安全
第11章 开发实时应用和服务
第12章 设计汇总