当前位置首页 > 百科> 正文

SOAWebService契约设计与版本化

2019-12-20 01:21:43 百科
SOAWebService契约设计与版本化

SOAWebService契约设计与版本化

《SOA Web Service契约设计与版本化》是ThomasErl所作的一部图书,该书首先简要回顾了SOA与面向服务的基本概念和关键目标,然后着重阐述了与Web服务契约的设计和演化相关的各种话题。主要内容包括WSDL、SOAP、XMLSchema、WS-Policy以及讯息设计的相关技术(SOAP和WS-Addressing)。

基本介绍

  • 书名:SOAWebService契约设计与版本化
  • 作者:ThomasErl
  • 译者:郭耀
  • ISBN:9787115218193
  • 定价:89.00 元
  • 出版社:人民邮电出版社
  • 出版时间:2010年01月
  • 开本:16开

内容简介

本书着重在SOA的上下文中论述Web服务契约技术,并且介绍了可以用于契约设计和版本化的各种设计模式。本书同时还提供了许多代码示例,可以帮助读者从实际案例中掌握如何在实践中运用相关的技术和原则。通过阅读本书,读者不仅可以学到在SOA中Web服务契约设计与版本化的基本技术,并且可以深入理解如何构建Web服务契约来支持面向服务。
本书作者包括了来自SOA、Web服务技术、服务契约设计以及服务版本化和治理等领域的顶级专家学者。其中主要作者Thomas Erl是业界公认的SOA领袖,本书以及他的其他着作被许多着名跨国公司的资深专家誉为“必备的SOA参考书”。
本书的读者对象是对面向服务架构、Web服务技术和服务契约版本化感兴趣的IT开发人员、分析师与架构师。

编辑推荐

《SOA Web Service契约设计与版本化》:Web Service要想成功地成为SOA的一部分,它们就需要平衡而有效的技术契约来支持服务的演化,并且在未来许多年可以被多次复用。现在,由全球最畅销的SOA作者与业界顶尖专家组成的团队为我们呈现了关于支持SOA的Web Service契约设计与治理的第一本全面指南。
《SOA Web Service契约设计与版本化》包括以下内容:
Web Service契约结构与命名空间的形象讲解;
版本化技术与策略;
採用WSDL的契约设计;
XML Sctlema讯息设计;
WS-Policy设计;
採用SOAP和WS-Addressirlg的讯息设计;
Web Service契约和SOA。

作者简介

俄尔(Thomas Erl),是世界上最畅销的SOA图书的作者,也是Prentice Hall出版的“Thomas Erl面向服务计算系列”丛书的系列编辑,同时还是SOA杂誌的编辑。他的书在全世界印刷了超过十万册,并且得到了很多大型软体组织资深成员的认可,其中包括IBM、Microsoft、Oracle、BEA、Sun、Intel、SAP和HP。
在他出版了该丛书的前3本,也就是Service-Oriented Architecture:A Field Guide to Integrating XML and Web Services、Service-Oriented Architecture:Concepts,Technology,and Design(中译版《SOA概念技术与设计》)和SOA:Principles of Service Design(中译版《SOA服务设计原则》)之后,又与多位业界知名专家合着了最新的两本书:SOA Design Patterns 与该书。

图书目录

目 录
第1章 概述 1
1.1 关于本书 2
1.2 本书的目标 3
1.3 读者对象 3
1.4 本书不涉及的内容 3
1.5 必备知识阅读 4
1.6 补充阅读 4
1.7 本书的组织结构 5
1.7.1 第1部分:基本服务契约设计 5
1.7.2 第2部分:高级服务契约设计 7
1.7.3 第3部分:服务契约版本化 8
1.7.4 第4部分:附录 9
1.8 符号、图形和风格约定 9
1.8.1 符号图例 9
1.8.2 突出显示的代码 10
1.8.3 要点总结 10
1.9 附加说明 10
1.9.1 本丛书官方站点 10
1.9.2 Visio模板 10
1.9.3 社区模式站点 10
1.9.4 主术语表 10
1.9.5 参考规範 10
1.9.6 补充的张贴图 10
1.9.7 SOA杂誌 11
1.9.8 通知服务 11
第2章 案例研究背景 12
2.1 案例研究示例的使用 13
2.2 案例研究背景:ActionCon公司 13
2.2.1 历史和文化 13
2.2.2 技术基础设施 13
2.2.3 商业目标和挑战 14
第1部分 基本服务契约设计
第3章 SOA基础和Web服务契约 16
3.1 基本的SOA术语 17
3.1.1 面向服务计算 17
3.1.2 面向服务 17
3.1.3 面向服务架构 18
3.1.4 服务 19
3.1.5 服务模型 20
3.1.6 服务组合 20
3.1.7 服务库存 21
3.1.8 面向服务分析 22
3.1.9 服务候选 22
3.1.10 面向服务设计 22
3.1.11 Web服务 23
3.1.12 服务契约 24
3.1.13 服务相关的粒度 24
3.1.14 进一步阅读 25
3.2 面向服务计算的目标和Web服务契约 25
3.2.1 内在互操作性的提高 26
3.2.2 联合的增强 26
3.2.3 厂商多样性选择的增加 26
3.2.4 业务和技术领域一致性的提高 26
3.2.5 策略性的好处 26
3.2.6 进一步阅读 26
3.3 面向服务和Web服务契约 27
3.3.1 标準化服务契约 28
3.3.2 服务鬆散耦合 28
3.3.3 服务抽象 29
3.3.4 服务可复用性 30
3.3.5 服务可发现性 30
3.3.6 服务可组合性 30
3.3.7 进一步阅读 30
3.4 SOA设计模式与Web服务契约 30
第4章 Web服务契约剖析 33
4.1 Web服务契约是什幺 34
4.1.1 基本结构 34
4.1.2 抽象与具体描述 35
4.2 Web服务契约的组成部分 36
4.2.1 抽象描述的主要组成部分 36
4.2.2 抽象描述的一个物理视图 38
4.2.3 具体描述的主要组成部分(一) 39
4.2.4 具体描述的主要组成部分(二) 40
4.2.5 契约组成部分之间的关係 41
4.2.6 讯息的主要组成部分 43
4.3 Web服务契约的创建技术 44
4.3.1 Web服务描述语言 45
4.3.2 XML模式定义语言 46
4.3.3 WS-Policy语言 48
4.3.4 SOAP语言 48
4.3.5 抽象描述的技术 49
4.3.6 具体描述的技术 50
4.3.7 WS-I Basic Profile 51
4.4 使用Web服务契约技术的指导原则 52
4.4.1 自动生成工具 52
4.4.2 灵活性vs. 限制性 53
4.4.3 模组化和复用 53
4.4.4 清晰度和易于处理 54
第5章 关于命名空间的简明指南 55
5.1 元素、属性与命名空间 56
5.1.1 命名空间和元素 57
5.1.2 命名空间和属性 60
5.1.3 使用命名空间 61
5.2 命名空间术语表 62
5.2.1 局部名称 62
5.2.2 扩展名称 62
5.2.3 命名空间前缀 62
5.2.4 默认命名空间 63
5.2.5 受限名称 63
5.2.6 目标命名空间 63
5.3 命名空间的结构 64
5.3.1 业界标準命名空间 66
5.3.2 命名空间与URL编码 67
5.3.3 命名空间与实际URL 68
5.4 命名空间语法 69
5.4.1 声明一个命名空间前缀 70
5.4.2 默认命名空间 73
5.4.3 没有命名空间 74
5.5 命名空间与Web服务契约 76
5.5.1 Web服务契约中的常见命名空间 77
5.5.2 讯息中的常见命名空间 78
5.5.3 本书中使用的命名空间 79
第6章 基本XML Schema:类型和讯息结构基础 80
6.1 XML模式的结构 83
6.2 元素和属性 84
6.2.1 元素与类型 85
6.2.2 元素与属性 85
6.2.3 全局与局部声明 87
6.2.4 元素粒度 88
6.3 类型 89
6.3.1 什幺是内容模型 89
6.3.2 命名类型与匿名类型 89
6.3.3 内置的简单类型 90
6.3.4 类型与继承 91
6.3.5 用户定义的简单类型 91
6.3.6 複合类型 94
6.3.7 在Web服务契约中如何使用类型 97
6.4 命名空间 98
6.4.1 目标命名空间 99
6.4.2 受限的与非受限的元素 102
6.4.3 命名空间与模式复用 104
6.5 讯息结构 107
第7章 基本WSDL(一):抽象描述设计 117
7.1 WSDL定义和文档 118
7.1.1 definitions元素 118
7.1.2 documentation元素 121
7.2 抽象描述结构 122
7.3 类型定义 123
7.4 讯息定义 127
7.4.1 message元素 127
7.4.2 part元素 128
7.5 操作定义 131
7.5.1 operation元素 131
7.5.2 讯息交换模式 131
7.5.3 parameterOrder属性 132
7.5.4 操作重载 133
7.6 连线埠类型定义 134
7.7 一个完整的抽象描述 135
第8章 基本WSDL(二):具体描述设计 138
8.1 具体描述结构 139
8.2 绑定定义 139
8.2.1 binding元素 140
8.2.2 可扩展性元素 141
8.2.3 binding元素的transport属性 142
8.2.4 “继承规则” 142
8.2.5 soap11:operation元素的soapAction属性 142
8.2.6 soap11:binding与operation元素的style属性 143
8.2.7 SOAP可扩展性元素(和use属性) 146
8.2.8 Literal vs. Encoded 146
8.2.9 绑定到SOAP 1.2 149
8.3 服务和连线埠定义 151
8.4 一个完整的WSDL定义(包含具体描述) 154
第9章 基本WSDL 2.0:新特性与设计选项 159
9.1 WSDL 2.0文档结构 160
9.2 接口定义 160
9.2.1 interface元素的extends属性 161
9.2.2 interface元素的styleDefault属性 162
9.2.3 wsdlx:safe全局属性 162
9.2.4 fault、infault和outfault元素 163
9.2.5 pattern和messageLabel属性 165
9.3 服务与端点定义 166
9.4 一个完整的WSDL 2.0定义 166
第10章 基本WS-Policy:断言、表达式与附加项 170
10.1 策略结构 171
10.1.1 新的命名空间与前缀 172
10.1.2 断言、表达式与Policy元素 172
10.2 组合策略 175
10.2.1 ExactlyOne元素 175
10.2.2 wsp:All元素 176
10.2.3 wsp:optional属性 176
10.3 操作符组合规则 177
10.3.1 幂等性规则 178
10.3.2 交换性规则 178
10.3.3 结合性规则 179
10.3.4 wsp:All对wsp:ExactlyOne的分配性 179
10.3.5 空操作符 181
10.3.6 等价 181
10.4 把策略附加到WSDL定义之上 182
10.4.1 策略附加点与策略主题 182
10.4.2 wsp:PolicyReference元素 186
10.4.3 嵌入的附加项 187
10.5 带有附加策略表达式的一个完整WSDL定义 188
第11章 基本讯息设计:SOAP信封结构、故障讯息与报头处理 193
11.1 SOAP讯息结构 195
11.1.1 soap:Envelope元素 196
11.1.2 soap:Body元素 196
11.1.3 soap:Header元素 197
11.1.4 soap:Fault元素 198
11.2 SOAP节点与角色 198
11.3 SOAP报头块与指定目标处理 200
11.3.1 soap:role属性 201
11.3.2 soap:mustUnderstand属性 204
11.3.3 soap:relay属性 206
11.3.4 业界SOAP报头块示例 206
11.4 SOAP中介 208
11.4.1 转发中介 209
11.4.2 主动中介 210
11.5 故障讯息 211
11.5.1 SOAP故障辞彙表 211
11.5.2 soap:Code元素 212
11.5.3 soap:Detail元素 216
11.5.4 SOAP故障vs. WSDL故障 216
11.5.5 SOAP 1.1故障元素与取值 217
第2部分 高级服务契约设计
第12章 高级XML Schema(一):讯息灵活性、类型继承与组合 220
12.1 讯息灵活性与约束粒度 221
12.1.1 通配符(xsd:any和xsd:anyAttribute) 221
12.1.2 扩展桶 225
12.1.3 通用元素与特殊元素 227
12.1.4 内容模型分组(xsd:choice、xsd:all与 xsd:sequence) 230
12.2 类型继承与组合 233
12.2.1 效仿类继承(抽象与xsd:extension) 233
12.2.2 类型组合(xsd:group) 238
12.3 常见的CRUD讯息类型 240
12.3.1 “饶舌”因素 241
12.3.2 “无关”因素 242
12.3.3 常见讯息类型 242
12.3.4 Add操作讯息 245
12.3.5 Get操作讯息 245
12.3.6 文档为中心的Update操作讯息 246
12.3.7 参数为中心的Update操作讯息 247
12.3.8 Delete操作讯息 249
12.3.9 任务服务的讯息类型 249
第13章 高级XML Schema(二):可复用性、关係设计与业界模式 250
13.1 可复用模式设计 251
13.1.1 使用xsd:include元素来复用模式 251
13.1.2 使用xsd:import元素来复用模式 256
13.2 在XML模式中表示关係 263
13.2.1 xsd:key与xsd:keyref元素 265
13.2.2 单独的关係元素 267
13.3 叙述性内容 269
13.4 採用产业模式 270
13.4.1 类型复用 271
13.4.2 添加通配符 274
第14章 高级WSDL(一):模组化、可扩展性、MEP与异步 282
14.1 模组化机制 283
14.1.1 import元素(WSDL 1.1、WSDL 2.0) 283
14.1.2 include元素(WSDL 2.0) 288
14.1.3 如何合併WSDL文档 290
14.1.4 导入XML模式 290
14.1.5 关于接口继承的更多内容(WSDL 2.0) 297
14.2 WSDL语言的扩展 298
14.2.1 SOAP绑定扩展的可扩展性 299
14.2.2 定製的WSDL扩展与wsdl:required属性 300
14.3 特殊的讯息交换模式 301
14.3.1 关于向外的MEP 301
14.3.2 WSDL 2.0中的Robust In-Only MEP 302
14.3.3 WSDL 2.0中的定製MEP 303
14.4 异步操作设计 305
14.4.1 异步的Web服务 305
14.4.2 轮询 306
14.4.3 异步协定绑定 307
14.4.4 WS-Addressing 308
14.4.5 使用异步模式的指导原则 311
14.5 WS-BPEL与WSDL 312
14.5.1 WSDL的WS-BPEL扩展 313
14.5.2 异步的讯息交换 313
14.5.3 相关性 314
第15章 高级WSDL(二):讯息分发、服务实例标识与非SOAP的HTTP绑定 317
15.1 WSDL 2.0中的极端鬆散耦合 318
15.1.1 #any属性 318
15.1.2 合法的#any讯息 318
15.1.3 架构上的考虑 320
15.1.4 WSDL中的#any与XML Schema中的xsd:any 321
15.2 讯息分发的挑战 321
15.2.1 创建唯一的讯息类型 323
15.2.2 HTTP SOAP动作报头 324
15.2.3 WS-Addressing的SOAP动作报头 327
15.3 指向服务实例的讯息 329
15.3.1 服务与服务实例 329
15.3.2 WSDL中的wsdlx与wsdli可扩展性属性 330
15.3.3 这个功能的套用 332
15.4 定製的报头块与报头故障 332
15.4.1 报头与报头故障类型 333
15.4.2 在WSDL 2.0中定义SOAP报头块 337
15.5 不使用SOAP绑定到HTTP 337
15.5.1 HTTP作为一种讯息协定 337
15.5.2 使用WSDL 1.1绑定到HTTP 338
15.5.3 使用WSDL 2.0绑定到HTTP 343
15.5.4 WSDL 2.0 HTTP绑定的其他功能 346
第16章 高级WS-Policy(一):策略集中化与嵌套、参数化和可忽略的断言 347
16.1 可复用性与策略集中化 348
16.1.1 策略集中化与策略定义 348
16.1.2 设计外部的WS-Policy定义 349
16.1.3 策略集中化的常见挑战 355
16.2 嵌套的和参数化的断言 356
16.2.1 嵌套的策略断言 356
16.2.2 参数化的断言 357
16.3 可忽略的断言 362
16.3.1 wsp:Ignorable与wsp:Optional 362
16.3.2 使用wsp:Ignorable来指定消费者 364
16.3.3 使用可忽略断言的注意事项 365
16.4 支持并发策略的契约 366
第17章 高级WS-Policy(二):定製策略断言设计、运行时表示与兼容性 371
17.1 定製的策略断言设计 372
17.1.1 定製断言模式 372
17.1.2 定製断言的处理逻辑 374
17.1.3 定製断言的属性 379
17.1.4 定製策略断言的设计考虑清单 380
17.2 定製策略断言的维护 381
17.2.1 规範策略辞彙表 381
17.2.2 断言描述文档 382
17.3 运行时策略表示 383
17.3.1 策略规範化 383
17.3.2 合併策略 386
17.4 交集与消费者-服务间的策略兼容性 390
17.4.1 兼容性的层次 390
17.4.2 断言兼容性 391
17.4.3 可替代项的兼容性 391
第18章 高级讯息设计(一):WS-Addressing辞彙表 394
18.1 EPR与MAP 396
18.1.1 端点引用 396
18.1.2 讯息定址属性 397
18.2 EPR辞彙表 399
18.2.1 wsa:EndpointReference元素 399
18.2.2 wsa:Address元素 399
18.2.3 wsa:ReferenceParameters元素 400
18.2.4 wsa:Metadata元素 401
18.3 MAP辞彙表 402
18.3.1 wsa:To元素 403
18.3.2 wsa:From元素 403
18.3.3 wsa:ReplyTo元素 404
18.3.4 wsa:FaultTo元素 404
18.3.5 wsa:Action元素 405
18.3.6 wsa:MessageId元素 405
18.3.7 wsa:RelatesTo元素与RelationshipType属性 405
第19章 高级讯息设计(二):WS-Addressing规则与设计技巧 408
19.1 WS-Addressing讯息规则 409
19.1.1 SOAP报头结构 409
19.1.2 从端点传送讯息的回答 411
19.1.3 MAP元素的MEP需求 412
19.2 EPR与WSDL绑定 416
19.2.1 在EPR中嵌入WSDL引用 416
19.2.2 在WSDL文档中嵌入EPR 418
19.3 WS-Addressing与动作取值 421
19.3.1 为什幺wsa:Action总是必需的 421
19.3.2 wsa:Action元素与WSDL 422
19.3.3 wsa:Action元素与HTTP 423
19.3.4 动作取值的一个简表 424
19.4 WS-Addressing SOAP故障 424
19.5 WS-Addressing策略断言 425
19.5.1 wsam:Addressing策略断言 425
19.5.2 wsam:AnonymousResponse策略断言 425
19.5.3 wsam:NonAnonymousResponse策略断言 426
第3部分 服务契约版本化
第20章 版本化基础 430
20.1 基本概念与术语 431
20.1.1 版本的範围 431
20.1.2 细粒度与粗粒度的约束 432
20.2 版本化与兼容性 433
20.2.1 向后兼容 433
20.2.2 向前兼容 434
20.2.3 兼容的改动 435
20.2.4 不兼容的改动 436
20.3 版本标识符 437
20.4 版本化策略 439
20.4.1 严格的策略(新改动、新契约) 439
20.4.2 灵活策略(向后兼容) 440
20.4.3 宽鬆策略(向后与向前兼容) 440
20.4.4 总结表格 441
第21章 WSDL定义的版本化 442
21.1 版本标识符与WSDL定义 443
21.2 操作定义的版本化 445
21.2.1 添加新的操作 446
21.2.2 重命名现有操作 448
21.2.3 删除一个现有操作 452
21.2.4 修改一个现有操作的MEP 456
21.2.5 向现有操作中添加一个故障讯息 459
21.3 连线埠类型定义的版本化 462
21.3.1 向连线埠类型中添加一个版本标识符 462
21.3.2 多个连线埠类型的版本化(灵活策略) 463
21.3.3 使用前缀来关联版本 465
21.4 具体描述的版本化 468
21.5 WSDL定义与向前兼容 470
21.5.1 降低操作粒度级别 470
21.5.2 使用WSDL 2.0中的#any属性值 471
第22章 讯息模式的版本化 474
22.1 基本术语与概念 475
22.1.1 “构件”概念的重新引入 475
22.1.2 内容集合 475
22.1.3 版本化与UPA规则 476
22.1.4 基本示例 477
22.2 XML Schema与WSDL目标命名空间 479
22.3 严格的版本化策略 479
22.3.1 添加新的模式构件 480
22.3.2 删除现有模式构件 480
22.3.3 重命名现有模式构件 481
22.3.4 修改现有模式构件的约束 481
22.4 灵活的模式版本化(使用可选构件) 482
22.4.1 添加新的模式构件 482
22.4.2 删除一个现有模式构件 484
22.4.3 重命名一个现有模式构件 485
22.4.4 修改现有模式构件的约束 485
22.5 宽鬆的模式版本化(使用通配符) 488
22.5.1 添加一个新的模式构件 488
22.5.2 删除一个现有模式构件 491
22.5.3 重命名一个现有模式构件 493
22.5.4 修改现有模式构件的约束 493
第23章 高级版本化 497
23.1 策略的版本化 498
23.1.1 可替代项 498
23.1.2 可选断言 499
23.1.3 可忽略断言 499
23.1.4 不同的端点 500
23.1.5 把主要版本变动传播到WSDL定义 501
23.2 定义“不能忽略的”未知元素 502
23.2.1 使用定製的mustUnderstand属性 502
23.2.2 使用soap:mustUnderstand属性 503
23.3 版本化与模式集中化 504
23.4 终止信息的表示 505
23.4.1 可忽略的终止断言 506
23.4.2 强制的终止断言 507
23.4.3 终止单个操作 508
23.5 使用未知内容 510
23.5.1 接受并保留未知内容 510
23.5.2 使用mustRetain标誌 512
23.6 部分确认 513
23.7 讯息实例的版本化 515
23.8 版本化策略的定製 516
23.8.1 模式版本化的定製策略 517
23.8.2 版本标识约定 517
第4部分 附录
附录A 案例研究总结 520
附录B 技术标準的制定过程 522
B.1 标準是如何开发的 523
B.2 标準开发过程 523
附录C C伪模式列表 525
附录D 本书用到的命名空间与前缀 541
附录E 与本书有关的SOAP设计模式 544
E.1 规範表达 545
E.2 规範模式 546
E.3 规範版本化 546
E.4 兼容改动 546
E.5 并发契约 547
E.6 契约集中化 547
E.7 契约反规範化 547
E.8 分解能力 548
E.9 解耦合的契约 548
E.10 分散式能力 549
E.11 讯息元数据 549
E.12 部分确认 549
E.13 策略集中化 550
E.14 代理能力 550
E.15 模式集中化 550
E.16 服务讯息传递 551
E.17 终止通知 551
E.18 确认抽象 552
E.19 版本标识 552
……
声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:baisebaisebaise@yeah.net