SOAWebService合约设计与版本化
图书信息

书 名: SOA Web Service合约设计与版本化
作者:ThomasErl译者:郭耀
出版社:人民邮电出版社
出版时间: 2010年01月
ISBN: 9787115218193
开本: 16开
定价: 89.00 元
内容简介本书首先简要回顾了SOA与面向服务的基本概念和关键目标,然后着重阐述了与Web服务合约的设计和演化相关的各种话题。主要内容包括WSDL、SOAP、XML Schema、WS-Policy以及消息设计的相关技术(SOAP和WS-Addressing)。本书着重在SOA的上下文中论述Web服务合约技术,并且介绍了可以用于合约设计和版本化的各种设计模式。本书同时还提供了许多代码示例,可以帮助读者从实际案例中掌握如何在实践中运用相关的技术和原则。通过阅读本书,读者不仅可以学到在SOA中Web服务合约设计与版本化的基本技术,并且可以深入理解如何构建Web服务合约来支持面向服务。
本书作者包括了来自SOA、Web服务技术、服务合约设计以及服务版本化和治理等领域的顶级专家学者。其中主要作者Thomas Erl是业界公认的SOA领袖,本书以及他的其他著作被许多著名跨国公司的资深专家誉为“必备的SOA参考书”。
本书的读者对象是对面向服务架构、Web服务技术和服务合约版本化感兴趣的IT开发人员、分析师与架构师。
图书目录目录
第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.2Visio模板10
1.9.3社区模式站点10
1.9.4主术语表10
1.9.5参考规范10
1.9.6补充的张贴图10
1.9.7SOA杂志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.11Web服务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.4SOA设计模式与Web服务合约30
第4章Web服务合约剖析33
4.1Web服务合约是什么34
4.1.1基本结构34
4.1.2抽象与具体描述35
4.2Web服务合约的组成部分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.3Web服务合约的创建技术44
4.3.1Web服务描述语言45
4.3.2XML模式定义语言46
4.3.3WS-Policy语言48
4.3.4SOAP语言48
4.3.5抽象描述的技术49
4.3.6具体描述的技术50
4.3.7WS-I Basic Profile51
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命名空间与实际URL68
5.4命名空间语法69
5.4.1声明一个命名空间前缀70
5.4.2默认命名空间73
5.4.3没有命名空间74
5.5命名空间与Web服务合约76
5.5.1Web服务合约中的常见命名空间77
5.5.2消息中的常见命名空间78
5.5.3本书中使用的命名空间79
第6章基本XML Schema:类型和消息结构基础80
6.1XML模式的结构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.1WSDL定义和文档118
7.1.1definitions元素118
7.1.2documentation元素121
7.2抽象描述结构122
7.3类型定义123
7.4消息定义127
7.4.1message元素127
7.4.2part元素128
7.5操作定义131
7.5.1operation元素131
7.5.2消息交换模式131
7.5.3parameterOrder属性132
7.5.4操作重载133
7.6端口类型定义134
7.7一个完整的抽象描述135
第8章基本WSDL(二):具体描述设计138
8.1具体描述结构139
8.2绑定定义139
8.2.1binding元素140
8.2.2可扩展性元素141
8.2.3binding元素的transport属性142
8.2.4 “继承规则”142
8.2.5soap11:operation元素的soapAction属性142
8.2.6soap11:binding与operation元素的style属性143
8.2.7SOAP可扩展性元素(和use属性)146
8.2.8Literal vs. Encoded146
8.2.9绑定到SOAP 1.2149
8.3服务和端口定义151
8.4一个完整的WSDL定义(包含具体描述)154
第9章基本WSDL 2.0:新特性与设计选项159
9.1WSDL 2.0文档结构160
9.2接口定义160
9.2.1interface元素的extends属性161
9.2.2interface元素的styleDefault属性162
9.2.3wsdlx:safe全局属性162
9.2.4fault、infault和outfault元素163
9.2.5pattern和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.1ExactlyOne元素175
10.2.2wsp:All元素176
10.2.3wsp:optional属性176
10.3操作符组合规则177
10.3.1幂等性规则178
10.3.2交换性规则178
10.3.3结合性规则179
10.3.4wsp:All对wsp:ExactlyOne的分配性179
10.3.5空操作符181
10.3.6等价181
10.4把策略附加到WSDL定义之上182
10.4.1策略附加点与策略主题182
10.4.2wsp:PolicyReference元素186
10.4.3嵌入的附加项187
10.5带有附加策略表达式的一个完整WSDL定义188
第11章基本消息设计:SOAP信封结构、故障消息与报头处理193
11.1SOAP消息结构195
11.1.1soap:Envelope元素196
11.1.2soap:Body元素196
11.1.3soap:Header元素197
11.1.4soap:Fault元素198
11.2SOAP节点与角色198
11.3SOAP报头块与指定目标处理200
11.3.1soap:role属性201
11.3.2soap:mustUnderstand属性204
11.3.3soap:relay属性206
11.3.4业界SOAP报头块示例206
11.4SOAP中介208
11.4.1转发中介209
11.4.2主动中介210
11.5故障消息211
11.5.1SOAP故障词汇表211
11.5.2soap:Code元素212
11.5.3soap:Detail元素216
11.5.4SOAP故障vs. WSDL故障216
11.5.5SOAP 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.4Add操作消息245
12.3.5Get操作消息245
12.3.6文档为中心的Update操作消息246
12.3.7参数为中心的Update操作消息247
12.3.8Delete操作消息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.1xsd: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.1import元素(WSDL 1.1、WSDL 2.0)283
14.1.2include元素(WSDL 2.0)288
14.1.3如何合并WSDL文档290
14.1.4导入XML模式290
14.1.5关于接口继承的更多内容(WSDL 2.0)297
14.2WSDL语言的扩展298
14.2.1SOAP绑定扩展的可扩展性299
14.2.2定制的WSDL扩展与wsdl:required属性300
14.3特殊的消息交换模式301
14.3.1关于向外的MEP301
14.3.2WSDL 2.0中的Robust In-Only MEP302
14.3.3WSDL 2.0中的定制MEP303
14.4异步操作设计305
14.4.1异步的Web服务305
14.4.2轮询306
14.4.3异步协议绑定307
14.4.4WS-Addressing308
14.4.5使用异步模式的指导原则311
14.5WS-BPEL与WSDL312
14.5.1WSDL的WS-BPEL扩展313
14.5.2异步的消息交换313
14.5.3相关性314
第15章高级WSDL(二):消息分发、服务实例标识与非SOAP的HTTP绑定317
15.1WSDL 2.0中的极端松散耦合318
15.1.1#any属性318
15.1.2合法的#any消息318
15.1.3架构上的考虑320
15.1.4WSDL中的#any与XML Schema中的xsd:any321
15.2消息分发的挑战321
15.2.1创建唯一的消息类型323
15.2.2HTTP SOAP动作报头324
15.2.3WS-Addressing的SOAP动作报头327
15.3指向服务实例的消息329
15.3.1服务与服务实例329
15.3.2WSDL中的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绑定到HTTP337
15.5.1HTTP作为一种消息协议337
15.5.2使用WSDL 1.1绑定到HTTP338
15.5.3使用WSDL 2.0绑定到HTTP343
15.5.4WSDL 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.1wsp:Ignorable与wsp:Optional362
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.1EPR与MAP396
18.1.1端点引用396
18.1.2消息寻址属性397
18.2EPR词汇表399
18.2.1wsa:EndpointReference元素399
18.2.2wsa:Address元素399
18.2.3wsa:ReferenceParameters元素400
18.2.4wsa:Metadata元素401
18.3MAP词汇表402
18.3.1wsa:To元素403
18.3.2wsa:From元素403
18.3.3wsa:ReplyTo元素404
18.3.4wsa:FaultTo元素404
18.3.5wsa:Action元素405
18.3.6wsa:MessageId元素405
18.3.7wsa:RelatesTo元素与RelationshipType属性405
第19章高级消息设计(二):WS-Addressing规则与设计技巧408
19.1WS-Addressing消息规则409
19.1.1SOAP报头结构409
19.1.2从端点发送消息的回答411
19.1.3MAP元素的MEP需求412
19.2EPR与WSDL绑定416
19.2.1在EPR中嵌入WSDL引用416
19.2.2在WSDL文档中嵌入EPR418
19.3WS-Addressing与动作取值421
19.3.1为什么wsa:Action总是必需的421
19.3.2wsa:Action元素与WSDL422
19.3.3wsa:Action元素与HTTP423
19.3.4动作取值的一个简表424
19.4WS-Addressing SOAP故障424
19.5WS-Addressing策略断言425
19.5.1wsam:Addressing策略断言425
19.5.2wsam:AnonymousResponse策略断言425
19.5.3wsam: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修改一个现有操作的MEP456
21.2.5向现有操作中添加一个故障消息459
21.3端口类型定义的版本化462
21.3.1向端口类型中添加一个版本标识符462
21.3.2多个端口类型的版本化(灵活策略)463
21.3.3使用前缀来关联版本465
21.4具体描述的版本化468
21.5WSDL定义与向前兼容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.2XML 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
附录CC伪模式列表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
……