第1章 概述 1
1.1本书的目标 2
1.2读者对象 3
1.3本书不涉及的内容 3
1.3.1本丛书中包括的其他书 3
1.3.2 SOA的标准化努力 4
1.4本书的组织结构 4
1.4.1第1部分:基本原理 5
1.4.2第2部分:设计原则 6
1.4.3第3部分:补充内容 8
1.4.4附录 8
1.5符号、图形和风格约定 9
1.5.1符号图例 9
1.5.2服务的符号 9
1.6附加说明 11
1.6.1更新、勘误和资源 11
1.6.2主术语表 11
1.6.3参考规范 11
1.6.4面向服务计算的海报 11
1.6.5 SOA杂志 11
1.6.6通知服务 12
1.6.7联系作者 12
第2章 案例研究 13
2.1案例研究背景:Cutit Saws公司 14
2.1.1历史 14
2.1.2技术基础设施和自动化环境 14
2.1.3业务目标与障碍 14
第1部分 基本原理 18
第3章 面向服务计算与SOA 18
3.1设计的基本原理 19
3.1.1设计特性 19
3.1.2设计原则 20
3.1.3设计范型 21
3.1.4设计模式 21
3.1.5设计模式语言 22
3.1.6设计标准 23
3.1.7最佳实践 24
3.1.8一个基本设计框架 25
3.2面向服务计算概述 27
3.2.1面向服务架构 27
3.2.2面向服务、服务以及面向服务方案逻辑 28
3.2.3服务组合 28
3.2.4服务库存 29
3.2.5理解面向服务计算中的元素 29
3.2.6服务模型 31
3.2.7 SOA和Web服务 34
3.2.8服务库存蓝图 37
3.2.9面向服务分析和服务建模 37
3.2.10面向服务设计 37
3.2.11 Service-Qriented Architecture:Concepts, Technology, and Design 39
3.3面向服务计算的目标和价值 39
3.3.1内在互操作性的提高 40
3.3.2联合的增强 41
3.3.3厂商多样性选择的增加 42
3.3.4业务和技术领域一致性的提高 42
3.3.5投资回报率的提高 43
3.3.6组织敏捷度的提高 44
3.3.7 IT负担的降低 45
3.4案例研究背景 46
第4章 面向服务 47
4.1面向服务概述 48
4.1.1业务自动化中的服务 49
4.1.2服务是能力的集合 49
4.1.3面向服务作为一种设计范型 49
4.1.4面向服务和互操作性 51
4.2面向服务解决的问题 52
4.2.1在面向服务到来之前 53
4.2.2面向服务的必要性 56
4.3面向服务带来的挑战 58
4.3.1设计复杂性 58
4.3.2对设计标准的需求 59
4.3.3自顶向下的需求 59
4.3.4支持敏捷方案交付的反敏捷服务交付 60
4.3.5治理需求 60
4.4其他考虑 61
4.4.1它不是一个革命性的范例 61
4.4.2不要求整个企业范围的标准化 61
4.4.3复用不是一个绝对的需求 62
4.5面向服务对企业的影响 62
4.5.1面向服务和“应用程序”的概念 62
4.5.2面向服务和“集成”的概念 64
4.5.3服务组合 65
4.5.4应用程序、集成和企业架构 66
4.6面向服务的起源和影响 67
4.6.1面向对象 67
4.6.2 Web服务 67
4.6.3业务流程管理(BPM) 67
4.6.4企业应用集成(EAI) 68
4.6.5面向侧面的编程(AOP) 68
4.7案例研究背景 69
第5章 理解设计原则 71
5.1使用设计原则 72
5.1.1在面向服务分析中应用这些原则 72
5.1.2在正式的设计过程中应用这些原则 73
5.1.3建立支持的设计标准 74
5.1.4把原则应用到一个可行的程度 74
5.2原则概要 75
5.3设计模式引用 76
5.4实现原则vs.调控原则 76
5.5原则与服务实现媒介 78
5.6原则与设计粒度 79
5.6.1服务粒度 79
5.6.2能力粒度 79
5.6.3数据粒度 79
5.6.4约束粒度 80
5.6.5关于粒度级别的小节 81
5.7案例研究背景 81
第2部分 设计原则 86
第6章 服务合约(标准化与设计) 86
6.1合约释义 87
6.1.1技术合约简述 87
6.1.2服务合约的起源 88
6.2原则概要 90
6.3服务合约标准化的类型 91
6.3.1功能服务描述的标准化 91
6.3.2服务数据表示的标准化 92
6.3.3服务策略的标准化 94
6.4合约与服务设计 96
6.4.1数据表示标准化和转换的避免 96
6.4.2标准化与粒度 97
6.4.3标准化服务合约与服务模型 99
6.4.4标准化服务合约设计如何影响其他原则 99
6.5服务合约设计的相关风险 102
6.5.1版本化 102
6.5.2技术依赖 103
6.5.3开发工具缺陷 103
6.6服务合约的进一步介绍 104
6.6.1非技术性服务合约文档 105
6.6.2“针对SOA的Web服务合约设计” 105
6.7案例研究 105
6.7.1计划中的服务 105
6.7.2设计标准 106
6.7.3标准化的WSDL定义概要 106
6.7.4标准化的XML Schema定义 107
6.7.5标准化的服务和数据表示层 107
6.7.6服务描述 108
6.7.7小结 109
第7章 服务耦合(服务内及消费者依赖) 110
7.1耦合释义 111
7.1.1耦合简述 111
7.1.2软件耦合的起源 112
7.2原则概要 113
7.3服务合约耦合的类型 114
7.3.1“逻辑-合约”耦合(服务逻辑到服务合约的耦合) 116
7.3.2“合约-逻辑”耦合(服务合约到服务逻辑的耦合) 118
7.3.3“合约-技术”耦合(服务合约到其底层技术的耦合) 119
7.3.4“合约-实现”耦合(服务合约到其实现环境的耦合) 119
7.3.5“合约-功能”耦合(服务合约到其外部逻辑的耦合) 121
7.4服务消费者耦合的类型 122
7.4.1“消费者-实现”耦合 123
7.4.2标准化服务耦合与合约集中化 123
7.4.3“消费者-合约”耦合 124
7.4.4消费者耦合的度量 128
7.5服务松散耦合与服务设计 129
7.5.1耦合与面向服务 129
7.5.2服务松散耦合与粒度 130
7.5.3耦合与服务模型 131
7.5.4服务松散耦合如何影响其他原则 132
7.6服务松散耦合的相关风险 133
7.6.1“逻辑-合约”耦合的限制 133
7.6.2当模式耦合太“松散”时的问题 134
7.7案例研究 135
7.7.1现有服务的耦合级别 135
7.7.2引入InvLegacyAPI服务 135
7.7.3服务设计选择 136
第8章 服务抽象(信息隐藏与元抽象类型) 140
8.1抽象释义 141
8.2原则概要 142
8.3元抽象类型 144
8.3.1技术信息抽象 145
8.3.2功能抽象 146
8.3.3程序逻辑抽象 147
8.3.4服务质量抽象 148
8.3.5元抽象类型和Web服务影响区域 149
8.3.6真实世界中的元抽象类型 150
8.4服务抽象度量 153
8.4.1合约内容的抽象级别 153
8.4.2访问控制级别 154
8.4.3抽象级别与服务质量元信息 155
8.5服务抽象与服务设计 155
8.5.1服务抽象vs.服务封装 155
8.5.2封装如何影响抽象 156
8.5.3服务抽象与非技术合约文档 157
8.5.4服务抽象与粒度 157
8.5.5服务抽象与服务模型 158
8.5.6服务抽象如何影响其他的原则 158
8.6服务抽象的相关风险 160
8.6.1多消费者耦合的需求 160
8.6.2人为误判 160
8.6.3安全和隐私的考虑 161
8.7案例研究 161
8.7.1服务抽象级别 161
8.7.2操作级的抽象例子 163
第9章 服务可复用性(商业与无关设计) 166
9.1复用释义 167
9.1.1复用简述 167
9.1.2复用的起源 169
9.2原则概要 170
9.3服务可复用性度量及商业设计的应用 171
9.3.1商业设计考虑 173
9.3.2计划中复用的度量 174
9.3.3实际复用的度量 175
9.3.4商业设计和镀金 175
9.4 SOA中的服务复用 176
9.4.1复用和无关服务 176
9.4.2服务库存蓝图 176
9.5标准化服务复用与逻辑集中化 177
9.5.1理解逻辑集中化 177
9.5.2作为企业标准的逻辑集中化 178
9.5.3逻辑集中化与合约集中化 179
9.5.4集中化与Web服务 180
9.5.5实现逻辑集中化的挑战 180
9.6服务可复用性与服务设计 181
9.6.1服务可复用性与服务建模 181
9.6.2服务可复用性与粒度 182
9.6.3服务可复用性与服务模型 182
9.6.4服务可复用性如何影响其他原则 183
9.7服务可复用性的相关风险 184
9.7.1文化上的考虑 184
9.7.2治理上的考虑 185
9.7.3可靠性上的考虑 187
9.7.4安全上的考虑 188
9.7.5商业设计需求上的考虑 188
9.7.6敏捷交付上的考虑 188
9.8案例研究 189
9.8.1 Inventory服务概要 189
9.8.2评估当前的能力 189
9.8.3为针对性的可复用性进行建模 190
9.8.4添加EditItemRecord操作 190
9.8.5添加ReportStockLevels操作 190
9.8.6添加AdjustItemsQuantity操作 190
9.8.7修改后的Inventory服务概要 191
第10章 服务自治(处理边界与控制) 192
10.1自治释义 193
10.1.1自治简述 193
10.1.2自治的起源 193
10.2原则概要 194
10.3服务自治的类型 195
10.3.1运行时自治 195
10.3.2设计时自治(治理) 196
10.4服务自治度量 197
10.4.1服务合约自治(带有规范化合约的服务) 197
10.4.2服务逻辑自治(部分孤立服务) 201
10.4.3完全自治(孤立的服务) 202
10.4.4具有混合自治级别的服务 203
10.5自治与服务设计 204
10.5.1服务自治与服务建模 204
10.5.2服务自治与粒度 204
10.5.3服务自治与服务模型 204
10.5.4服务自治怎样影响其他原则 206
10.6服务自治的相关风险 208
10.6.1错误地判断服务的范围 208
10.6.2包装服务和遗留逻辑封装 208
10.6.3对服务需求的过高估计 209
10.7案例研究 209
10.7.1 GetItern操作现在所实现的自治 209
10.7.2新的拥有更高自治的操作级别架构 210
10.7.3对于Run Lab Project组合的影响 211
第11章 服务无状态性(状态管理延迟与无状态性设计) 213
11.1状态管理释义 214
11.1.1状态管理简述 214
11.1.2状态管理的起源 215
11.1.3延迟与委托的比较 218
11.2原则概要 218
11.3状态的类型 220
11.3.1活跃和被动 221
11.3.2无状态和有状态 221
11.3.3会话和上下文数据 221
11.4服务无状态性度量 223
11.4.1非延迟的状态管理(无状态性从低到没有) 224
11.4.2部分延迟存储(较低的有状态性) 225
11.4.3部分架构状态管理延迟(中等无状态性) 225
11.4.4完全架构状态管理延迟(高度无状态性) 225
11.4.5内部延迟状态管理(高度无状态性) 226
11.5无状态性与服务设计 227
11.5.1消息作为一个状态延迟选项 227
11.5.2服务无状态性与服务实例 228
11.5.3服务无状态性与粒度 228
11.5.4服务无状态性与服务模型 229
11.5.5服务无状态性如何影响其他原则 229
11.6服务无状态性的相关风险 231
11.6.1对于架构的依赖 231
11.6.2增加的运行时性能需求 231
11.6.3低估交付代价 231
11.7案例研究 232
第12章 服务可发现性(可解释性与交流) 237
12.1可发现性释义 238
12.1.1发现和解释、可发现性和可解释性简述 239
12.1.2发现的起源 241
12.2原则概要 242
12.3发现和可发现性元信息的类型 243
12.3.1设计时发现和运行时发现 244
12.3.2可发现性元信息 245
12.3.3功能性元数据 246
12.3.4服务元数据的质量 246
12.4服务可发现性度量 247
12.4.1基本级别 247
12.4.2定制分级系统 247
12.5可发现性与服务设计 248
12.5.1服务可发现性与服务建模 248
12.5.2服务可发现性与粒度 249
12.5.3服务可发现性与策略断言 249
12.5.4服务可发现性与服务模型 249
12.5.5服务可发现性如何影响其他原则 249
12.6服务可发现性的相关风险 251
12.6.1可发现性在实施后的应用 251
12.6.2由不擅交流的人员来应用本原则 251
12.7案例研究 252
12.7.1服务概要(功能元信息) 252
12.7.2相关的服务质量元信息 253
第13章 服务可组合性(组合成员设计与复杂组合) 255
13.1组合释义 256
13.1.1组合简述 256
13.1.2组合的起源 256
13.2原则概要 260
13.3组合的概念和术语 262
13.3.1组合和组合实例 262
13.3.2组合成员和控制器 262
13.3.3服务组合和Web服务 265
13.3.4服务活动 266
13.3.5组合启动器 267
13.3.6点到点的数据交换和组合 268
13.3.7组合的类型 268
13.4复杂服务组合 269
13.4.1一个服务库存演化的阶段 269
13.4.2定义复杂服务组合 271
13.4.3为复杂服务组合做准备 271
13.5服务可组合性度量 272
13.5.1组合的演化周期状态 272
13.5.2组合设计评估 273
13.5.3组合运行时评估 273
13.5.4组合治理的评估 274
13.5.5可组合性的度量 275
13.6组合与服务设计 278
13.6.1服务可组合性与粒度 278
13.6.2服务可组合性与服务模型 279
13.6.3服务可组合性与组合自治 279
13.6.4服务可组合性与编排 280
13.6.5服务可组合性如何影响其他原则 281
13.7服务组合的相关风险 284
13.7.1组合成员成为单点失效的源头 285
13.7.2组合成员成为性能瓶颈 285
13.7.3对于组合中“过度复用”的治理强度 285
13.8案例研究 286
第3部分 补充内容 290
第14章 面向服务与面向对象:原则和概念上的比较 290
14.1两种设计范式的传说 291
14.2目标的比较 293
14.2.1提高业务需求的满足度 294
14.2.2提高鲁棒性 294
14.2.3提高可扩展性 295
14.2.4提高灵活性 295
14.2.5提高可复用性和生产率 295
14.3基本概念的比较 296
14.3.1类和对象 296
14.3.2方法和属性 296
14.3.3消息 297
14.3.4接口 298
14.4设计原则的比较 299
14.4.1封装 300
14.4.2继承 300
14.4.3泛化和特化 301
14.4.4抽象 303
14.4.5多态性 303
14.4.6开放-封闭原则(OCP) 304
14.4.7别重复你自己(DRY) 304
14.4.8单一职责原则(SRP) 304
14.4.9委托 307
14.4.10关联 307
14.4.11组合 308
14.4.12聚合 308
14.5面向服务类的设计指南 310
14.5.1类接口的实现 310
14.5.2限制类对接口的访问 310
14.5.3不要在接口中定义公共属性 310
14.5.4谨慎使用继承 310
14.5.5避免跨服务的has-a关系 311
14.5.6使用抽象类进行建模,而不是进行设计 311
14.5.7使用门面(Facade)类 311
第15章 实践支持 312
15.1服务概要 313
15.1.1服务层的概要结构 313
15.1.2能力概要结构 314
15.1.3其他考虑因素 315
15.2词汇表 316
15.2.1面向服务计算的术语 317
15.2.2服务分类的术语 317
15.2.3类型和相关术语 318
15.2.4设计原则的应用级别 318
15.3组织角色 319
15.3.1服务分析员 321
15.3.2服务架构师 321
15.3.3服务管理者 321
15.3.4 schema管理者 322
15.3.5策略管理者 322
15.3.6服务注册表管理者 322
15.3.7技术交流专家 323
15.3.8企业架构师 323
15.3.9企业设计标准管理者(及审计员) 323
第16章 面向服务原则到战略目标的映射 325
16.1提高内在互操作性的原则 326
16.2增强联合的原则 327
16.3增加厂商多样化选择的原则 327
16.4提高业务和技术领域一致性的原则 328
16.5提高投资回报率的原则 328
16.6提高组织敏捷度的原则 329
16.7降低IT整体负担的原则 330
第4部分 附录 332
附录A 案例研究总结 332
附录B 过程描述 334
B.1交付过程 335
B.1.1自顶向下与自底向上 335
B.1.2库存分析周期 335
B.1.3库存分析与面向服务设计 337
B.1.4选择交付策略 337
B.2面向服务分析过程 338
B.2.1定义分析范围 339
B.2.2识别受影响的系统 340
B.2.3执行服务建模 340
B.3服务建模过程 340
B.4面向服务设计过程 342
B.4.1设计过程和服务模型 342
B.4.2服务设计过程与面向服务 342
附录C 原则和模式的对照 345
其他资源 347