《SQA WEB SERVICE合约设计与版本化》PDF下载

  • 购买积分:17 如何计算积分?
  • 作  者:(美)俄尔(ErlT.)等著
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2010
  • ISBN:9787115218193
  • 页数:552 页
图书介绍:本书首先简要回顾了SOA与面向服务的基本概念和关键目标,然后着重阐述了与Web服务合约的设计和演化相关的各种话题。主要内容包括WSDL、SOAP、XML Schema、WS-Policy以及消息设计的相关技术(SOAP和WS-Addressing)。

第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 SML模式定义语言 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 SML模式的结构 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-Add5essing规则与设计技巧 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部分 附录 520

附录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