(特价书)SOA架构:服务和微服务分析及设计(原书第2版)
基本信息
- 原书名:Service-Oriented Architecture: Analysis and Design for Services and Microservices (Second Edition)
内容简介
书籍 计算机书籍
本书一直以来都是在SOA、面向服务和服务技术方面的、端到端的教程。如今,已经更新到第2版,正式引入微服务和微任务抽象,作为面向服务架构及其相关服务层的一部分。新版的案例研究示例和图例进一步阐释和定位微服务模型,并与更传统的服务类型相关联。本书可作为应用架构师、企业架构师、软件开发人员以及任何有兴趣了解或负责设计与实现现代、面向服务解决方案的IT专业人士的参考书。
目录
译者序
致谢
第1章 概述 1
1.1 本书中如何使用模式 2
1.2 涵盖第1版主题的系列书籍 2
1.3 本书的组织形式 3
1.4 原则、约束条件和设计模式 4
1.5 附加信息 5
第2章 案例研究背景知识 7
2.1 如何应用案例研究 7
2.2 案例研究背景1:Transit Line Systems, Inc. 7
2.3 案例研究背景2:Midwest University Association 7
第一部分 基本原理
第3章 理解面向服务 10
3.1 面向服务简介 10
3.1.1 业务自动化中的服务 11
3.1.2 服务是能力的集合 12
3.1.3 面向服务是一种设计范式 13
3.1.4 面向服务的设计原则 15
3.2 面向服务所解决的问题 16
3.2.1 竖井式应用架构 16
3.2.2 大量的浪费 18
3.2.3 缺乏效率 18
3.2.4 企业膨胀 19
3.2.5 产生复杂的基础设施和错综复杂的企业架构 19
3.2.6 系统间集成成为永恒的挑战 20
3.2.7 面向服务的需求 20
3.2.8 增加大量可复用解决方案逻辑 21
3.2.9 削减应用个性化业务逻辑 21
3.2.10 削减业务逻辑的总量 22
3.2.11 本征互操作性 22
3.3 面向服务对企业的影响 23
3.3.1 面向服务和“应用”的概念 23
3.3.2 面向服务和“集成”的概念 24
3.3.3 服务组合 25
3.4 面向服务计算的目的和优势 26
3.4.1 增强本征互操作性 27
3.4.2 增强联合 28
3.4.3 增加供应商多元化选择 29
3.4.4 同步提升业务与技术领域 30
3.4.5 提高投资回报率 31
3.4.6 提高组织的业务敏捷性 32
3.4.7 减少IT成本 34
3.5 面向服务的4个支撑点 34
3.5.1 团队合作 36
3.5.2 教育 36
3.5.3 纪律 36
3.5.4 平衡范围 37
第4章 理解面向服务架构 39
4.1 SOA的4个特性 40
4.1.1 业务驱动 40
4.1.2 供应商中立 41
4.1.3 企业中心化 42
4.1.4 组合中心化 44
4.1.5 设计优先级 45
4.2 SOA的4种常见类型 46
4.2.1 服务架构 47
4.2.2 服务组合架构 50
4.2.3 服务目录架构 55
4.2.4 面向服务的企业架构 58
4.3 面向服务和SOA的最终结果 58
4.4 SOA项目和生命周期 60
4.4.1 方法论和项目交付的策略 62
4.4.2 SOA项目阶段 62
4.4.3 SOA项目采用的计划 65
4.4.4 服务目录分析 65
4.4.5 面向服务分析 (服务建模) 66
4.4.6 面向服务设计(服务契约) 68
4.4.7 服务逻辑设计 69
4.4.8 服务开发 69
4.4.9 服务测试 69
4.4.10 服务部署和维护 71
4.4.11 服务使用和监控 71
4.4.12 服务发现 72
4.4.13 服务版本控制和退役 72
4.4.14 项目阶段和组织角色 72
第5章 理解服务与微服务的层次 74
5.1 服务层次简介 74
5.1.1 服务模型和服务层次 74
5.1.2 服务和候选服务能力 76
5.2 分解业务问题 76
5.2.1 功能分解 76
5.2.2 服务封装 76
5.2.3 不可知上下文 76
5.2.4 不可知能力 79
5.2.5 功能抽象 79
5.2.6 实体抽象 80
5.2.7 非不可知上下文 80
5.2.8 微任务抽象和微服务 81
5.2.9 流程抽象和任务服务 81
5.3 构建面向服务的解决方案 84
5.3.1 面向服务和服务组合 84
5.3.2 能力组合和能力再组合 84
5.3.3 逻辑集中与服务规范化 90
第二部分 面向服务的分析与设计
第6章 Web服务及微服务的分析与建模 94
6.1 Web服务建模过程 94
6.1.1 步骤1:分解业务流程(使之成为细粒度操作) 95
6.1.2 步骤2:过滤不适操作 98
6.1.3 步骤3:定义候选实体服务 99
6.1.4 步骤4:识别特定流程逻辑 101
6.1.5 步骤5:应用面向服务 102
6.1.6 步骤6:识别候选服务组合 102
6.1.7 步骤7:分析处理需求 103
6.1.8 步骤8:定义候选公共服务 104
6.1.9 步骤9:定义候选微服务 105
6.1.10 步骤10:应用面向服务 106
6.1.11 步骤11:修订候选服务组合 106
6.1.12 步骤12:修订候选能力分组 106
第7章 REST服务及微服务的分析与建模 107
7.1 REST服务建模过程 107
7.1.1 步骤1:分解业务流程(使之成为细粒度操作) 109
7.1.2 步骤2:滤掉不适操作 109
7.1.3 步骤3:定义候选实体服务 110
7.1.4 步骤4:识别特定流程逻辑 112
7.1.5 步骤5:识别资源 113
7.1.6 步骤6:将服务能力与资源和方法相关联 114
7.1.7 步骤7:应用面向服务 116
7.1.8 步骤8:识别候选服务组合 117
7.1.9 步骤9:分析处理需求 118
7.1.10 步骤10:定义候选公共服务(并且关联资源和方法) 119
7.1.11 步骤11:定义候选微服务(并且关联资源和方法) 121
7.1.12 步骤12:应用面向服务 121
7.1.13 步骤13:修订候选服务组合 121
7.1.14 步骤14:修改资源定义和候选能力分组 122
7.2 附加因素 123
7.2.1 统一契约建模和REST服务目录建模 123
7.2.2 REST约束条件和统一契约建模 125
7.2.3 REST服务能力粒度 125
7.2.4 资源与实体 126
第8章 Web服务的服务API与契约设计 128
8.1 服务模型设计关注点 129
8.1.1 实体服务设计 129
8.1.2 公共服务设计 130
8.1.3 微服务设计 131
8.1.4 任务服务设计 131
8.2 Web服务设计指南 140
8.2.1 应用命名标准 140
8.2.2 应用合适的服务契约API粒度 141
8.2.3 将Web服务的操作设计成原生可扩展的 143
8.2.4 考虑采用模块化WSDL文档 143
8.2.5 慎用命名空间 144
8.2.6 使用SOAP文档和Literal属性值 145
第9章 REST服务及微服务的服务API与契约设计 147
9.1 服务模型设计关注点 147
9.1.1 实体服务设计 148
9.1.2 公共服务设计 148
9.1.3 微服务设计 149
9.1.4 任务服务设计 150
9.2 REST服务设计指南 155
9.2.1 统一服务契约设计关注点 155
9.2.2 设计和标准化方法 155
9.2.3 设计和标准化HTTP报头 157
9.2.4 设计和标准化HTTP响应码 158
9.2.5 自定义响应码 160
9.2.6 设计媒介类型 162
9.2.7 设计媒介类型模式 163
9.2.8 复杂方法设计 164
9.2.9 无状态复杂方法 166
9.2.10 状态复杂方法 171
第10章 Web服务及REST服务的服务API与契约版本控制 176
10.1 版本控制的基本要素 176
10.1.1 Web服务版本控制 176
10.1.2 REST服务版本控制 177
10.1.3 粒度的精细与粗糙限制 177
10.2 版本控制和兼容性 178
10.2.1 后向兼容 178
10.2.2 前向兼容 180
10.2.3 兼容性变更 182
10.2.4 非兼容性变更 183
10.3 REST 服务兼容性关注点 184
10.4 版本标识符 186
10.5 版本控制策略 188
10.5.1 严格策略(新变更,新契约) 188
10.5.2 弹性策略(后向兼容) 189
10.5.3 松散策略(反向和前向兼容) 189
10.5.4 策略总结 190
10.6 REST服务版本控制关注点 190
第三部分 附录
附录A 面向服务原则参考 194
附录B REST约束条件参考 199
附录C SOA设计模式参考 203
附录D 注释版SOA声明 220
译者序
面向服务的架构(Service-Oriented Architecture)是企业软件的一种主流架构,它是一个组件模型,将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。
作为一名IT从业者,翻译只是我自己的兴趣,当初接受出版社的邀请来翻译本书,原因主要有以下几个方面:第一,本书讲述的内容正好是行业热门技术所趋向,而且很重要,在没有翻译这本书前,我已经从事了这方面的工作很多年;第二,作者Thomas Erl颇具威望,他创作的书籍已获得IBM、甲骨文、英特尔等很多主要IT机构高级成员的认可;第三,我非常愿意在SOA领域尽自己的绵薄之力。翻译本书自然就成为我所期望的一项工作,但毕竟没有受过完善的翻译培训,加之中英文表述之间的差异,在翻译过程中食洋不化在所难免,译文中必然存在不少问题,读者或多或少会遭遇一些阅读不适,所以,我诚恳地欢迎读者批评指正,并提出宝贵意见。
本书作者Thomas Erl是加拿大知名作家,Arcitura教育创始人,在SOA领域做出了巨大贡献,也是Prentice Hall Service Technology Series from Thomas Erl系列图书的编辑,他的书籍已成为国际畅销书,他的100多篇文章和访谈也已在许多出版物中出版过,包括《华尔街日报》和《CIO杂志》。能够有机会翻译这位SOA技术大咖的书,我也倍感荣幸。本书内容主要分为三个部分:第一部分为基本原理,主要介绍了面向服务,对面向服务、面向服务架构和服务与微服务层次的理解;第二部分为面向服务的分析与设计,分别讲述了Web服务、REST服务与微服务的分析建模和服务API及契约设计;第三部分为附录部分,主要包括一些原理及模式参考。书中探讨了SOA概念背后的核心内涵,即从本质上通过复用、松耦合、互操作等机制来提高软件质量、加快软件研发效率、使研发出来的产品能够相互集成并灵活适应变化。对关注SOA技术的读者,希望本书能够给你们带来帮助和启发。
在翻译本书的过程中,中西方文化差异和书中一些晦涩的表达偶尔也让我困惑,有的专业名词是否翻译,如何进行翻译等都值得深究。通过请教一些国外的朋友,我学到了一些尚未触及的专业术语,同时也对SOA有了更多的理解。待全书翻译完成,我对作者的表达自然而然也产生了一些共鸣。尽管自己在这个行业从业多年,但还是有一些专业术语需要斟酌,在翻译过程中,也翻阅了不少业界资料,在此感谢与我一起翻译的同事李多对本书翻译所做的贡献,也非常感谢华章公司的编辑关敏和唐晓琳在翻译过程中表现出来的热心、耐心和敬业,同她们合作,让人非常愉快,谢谢!
李东