本节书摘来自异步社区《soa web service合约设计与版本化》一书中的第1章1.7节本书的组织结构,作者【美】thomas erl , 等,更多章节内容可以访问云栖社区“异步社区”公众号查看。
1.7 本书的组织结构
soa web service合约设计与版本化
本书的第1章和第2章分别提供了概述性内容与案例研究的背景信息。其余的章节被分成了如下4部分:
第1部分 基本服务合约设计;
第2部分 高级服务合约设计;
第3部分 服务合约版本化;
第4部分 附录。
1.7.1 第1部分:基本服务合约设计
第3章 soa基础与web服务合约
我们一开始先介绍了和soa、面向服务与总体的面向服务计算相关的关键术语和概念,因为它们同web服务合约设计是密切相关的。
第4章 web服务合约剖析
本介绍性章节从逻辑和物理两个视角提供了对于web服务合约结构的生动探讨。它关注的是建立一个概念模型,用来讲解构成一个web服务合约的各种组成部分,以及使这些部分能够一起工作的机制。
然后讨论了与抽象和具体描述有关的概念,以及它们与消息、操作和端口类型(接口)定义之间的关系,还有不同的消息组成部分,例如主体、报头和报头故障。同样会讲解的还包括绑定、服务和端口(端点)的内容,以及它们与消息组成部分(主体、报头和报头故障)、信封结构和其他内容之间的关系。
本章并没有包含任何代码示例,而只是在讨论了抽象的基础知识之后,开始介绍用来构建web服务合约的实际技术。最后一个小节使用一组指导原则来结束了本章内容。
第5章 关于命名空间的简明指南
作为基于xml的web服务框架的有机组成部分,定制的和预定义的命名空间都会被使用到,以确保本书中所谈到的所有技术可以一起和谐地工作。因此,在我们讨论用来构建web服务合约的实际技术语言之前,我们首先提供了一个关于命名空间的非正式的、但却很深入的教程。
由于对许多it人员来说,命名空间的话题总是会非常容易造成困惑,所以本章花了较多的笔墨且使用直白的语言介绍命名空间的概念和应用。本章提供了大量的示例和观点,从而为你学习后续章节中讨论到的任何命名空间相关的问题都做好充分的准备。
第6章 基本xml schema:类型和消息结构基础
现在我们开始介绍合约设计的详细内容,本章专门用于讲解基本的xml schema话题,这些内容都对web服务合约的消息设计有关。这里的重点是复合类型与简单类型之上的不同约束种类。本章还提供了关于xml schema类型如何可以使用类型继承特性来进行定制和扩展。
本章正式启动了案例研究,介绍了通过应用xml schema特性而得到解决的问题集合。这里所探讨的例子最终会导致创建一系列的xml schema类型,这些会在后续章节中的消息定义中用到。
第7章 基本wsdl(一):抽象描述设计
在这一章中,我们讨论了web服务描述语言(wsdl)1.1中与构成抽象服务描述的各个部分的设计与构造相关的各个方面。这包括了xml schema类型与消息定义的关联,如何把消息组织成操作定义,以及把操作分组成端口类型定义。本章还介绍了报头的创建,以及如何使用不同的命名空间来使不同的技术可以在一个wsdl文档内共存。
通过一系列非正式的案例研究示例,本章创建了一个完整的抽象描述,并且把在第6章中定义的xml schema类型结合了进来。
第8章 基本wsdl(二):具体描述设计
本章转到具体描述的设计与开发,这部分wsdl文档把抽象描述绑定到实际的传输和消息协议之上,并且为之分配一个或多个物理网络地址。
本章介绍了所有主要的wsdl 1.1语言元素,它们被用来建立这种绑定,包括服务和端口定义,以及重要的绑定结构自身的内容。大量的内容被专门用于探讨这些内置的wsdl元素如何进一步被辅以使用来自其他语言(例如soap)的可扩展性元素。另外还介绍了如何把报头和报头故障部分绑定到实际的soap消息区域。
本章继续了前面的案例研究示例,并创建了一个包括抽象和具体描述的完整wsdl定义。
第9章 基本wsdl 2.0:新特性与设计选项
本书还全面介绍了wsdl 2.0标准,包括新的功能与在wsdl 1.1语言之上所做的一些语法上的修改。通过一系列例子,本章针对抽象和具体描述来介绍了wsdl 1.1与2.0之间的区别,并且随后给出了第8章中的wsdl文档的完整wsdl 2.0版本。
第10章 基本ws-policy:表达、断言与附加项
通过创建策略断言与策略表达式,ws-policy语言提供了不同的手段来扩展你可以用wsdl与xml schema创建的技术接口。
本章介绍了策略如何被定义与表示,以及随后关联(附加)到不同的wsdl文档组成部分之上的方法。内容包括策略主题、策略可替代项、组合策略,以及嵌套的和外部附加选项。
本章的示例同样得到了一个修改过的wsdl定义,其中包含了一个简单的、附加的策略表达式。
第11章 基本消息设计:soap信封结构、故障消息与报头处理
现在,我们把注意力转到当消息在传送到web服务与从web服务发出的时候,用来表示消息在“连线上”存在结构的soap技术语言。虽然本书只是专门用于介绍web服务合约的,但是理解消息是如何被处理的对于我们更有效地设计它们也非常重要。
本章中的一个主要话题是soap报头块在运行时的使用,以及在执行“指定目标处理”的时候,当报头块被设计来只能由一个消息路径上的特定程序访问和使用时,会涉及的各种角色与选项。
注意本章并不涉及soap通信框架,或与web服务合约的设计不直接相关的任何其他话题。
1.7.2 第2部分:高级服务合约设计
第12章 高级xml schema(一):消息灵活性、类型继承与组合
一个web服务需要交换各种不同消息,每个消息都有它自己的独特需求。本章是专门用来讲解高级xml schema话题的两章中的第一章,探讨通配符、扩展桶与内容模型分组的使用,并介绍使用这xml schema功能来适应不同类型的web服务消息设计的各种技术。
然后,本章继续介绍了类型继承与组合,并进一步讨论了跨模式的继承,它作为一个概念,可能会与跨服务的继承产生不同的影响。具体来说,本章的这个部分提供了一些例子来详细解释抽象模式如何创建,以及模式通常可以如何进行扩展。
最后,本章提供了关于支持crud风格的web服务操作的消息设计的讨论,并分别介绍add、get、delete和update消息的设计,以及常见的粒度级别。
第13章 高级xml schema(二):可复用性、关系设计与业界模式
在不同web服务之间共享模式的能力,对于建立分离的模式与合约架构层是非常根本的要求。本章深入讲解模式可以被划分为多个可复用模块的不同选项,并且可以随后被不同模式(最终,可以被不同的wsdl定义)来包含或导入。另外还讨论与演示了一个公共模式库的创建。
随后是专门用来解释如何使用xml schema功能来对关系数据结构进行简化,以及如何添加叙述性的内容来辅助基本的模式内容。本章最后讲解了预定义的产业模式的使用与结合,以及一些例子与技巧。
第14章 高级wsdl(一):模块化、可扩展性、mep与异步
本章中介绍并演示了wsdl 1.1和2.0的模块化功能与技术,以及与非传递性限制相关的问题,这也与跨wsdl定义之间的xml schema定义的复用有关。并且比较了wsdl中的导入和包含的使用,以及wsdl 2.0的接口继承设计选项。
紧接着是对于不同wsdl可扩展性元素的讲解,以及如何在wsdl定义结构之内使用与定位它们,并强调介绍了wsdl绑定结构。
随后的小节讨论了特殊的消息交换模式(包括wsdl 1.1的向外的mep,与wsdl 2.0的 robust in-only mep),以及涉及http、soap和smtp的异步消息交换的各种高级技术。最后,本章用一节篇幅专门介绍ws-bpel相关的可扩展性元素,以及对于如何来准备最终会被ws-bpel流程定义组装的wsdl定义的推荐做法。
第15章 高级wsdl(二):消息分发、服务实例标识和非soap的http绑定
本章讲解了各种高级的wsdl技术,包括wsdl 2.0新功能的使用,支持更宽泛的消息耦合。专门有一个小节介绍消息分发设计问题,以及关于如何利用soap动作取值,来支持基于分发目的对wsdl定义进行解释的指导原则。
其他的话题包括web服务实例标识与创建报头块的不同方法,包括报头故障扩展的使用。最后,介绍并演示了在wsdl 1.1和2.0中不用soap把wsdl绑定到http上的方法。
第16章 高级ws-policy(一):策略集中化与嵌套、参数化和可忽略的断言
本章继续第10章中开始介绍的ws-policy框架,深入讲解各种架构相关的问题,包括策略集中化设计模式的应用,以及把不同策略定义文档关联到wsdl定义上的不同方法。
其后的内容是演示如何使用嵌套的和参数化的策略表达式,然后给出关于可忽略策略断言的详细介绍,其中包括与可选断言的比较。本章最后是对于支持并发合约的web服务合约的一个概览。
第17章 高级ws-policy(二):定制策略断言设计、运行时表示与兼容性
本章介绍创建定制策略断言背后的设计过程与注意事项。不同的例子用来演示不同类型的断言,并进一步讲解了定制策略的优缺点。专门有一节用于讨论同定制策略断言词汇表相关的问题。
本章后面探讨了运行时表示(即策略语法),提供了对于策略表达式和可替代项如何被精化成规范化表示的方法。最后,介绍了一个交集算法,用来识别在服务提供者与消费者策略之间的兼容性。
第18章 高级消息设计(一):ws-addressing词汇表
ws-addressing提供了用来扩展基本soa消息设计的产业标准手段,以适应大范围的复杂消息交换需求。
本章正式介绍了ws-addressing标准,分别描述了由端点引用(epr)和消息寻址属性(map)词汇表中的语言元素与soap报头。本章提供了大量的代码示例,并在最后给出了包括完整的ws-addressing报头集合的一个案例研究示例。
第19章 高级消息设计(二):ws-addressing规则与设计技巧
本章讲解了与ws-addressing有关的各种更加特殊化的内容,其中包括epr参数映射技术,与在wsdl定义中的端点引用有关的设计问题,以及ws-addressing动作取值与可替代的soap动作表达式之间的详细比较。本章最后给出了由ws-addressing规范提供与标准化的策略断言的描述。
1.7.3 第3部分:服务合约版本化
第20章 版本化基础
本章讲解与web服务合约版本化有关的基本概念和术语,以及从技术和治理的角度对于向前和向后兼容的详细比较。
随后通过使用注释的版本号与命名空间取值介绍并演示了版本标识的方法。本章最后几节讲解了三种主要的版本化策略(严格、灵活、宽松),每种策略都会在不同程度上对向前和向后兼容提供支持。这些策略在后面几章中会多次引用到。
第21章 wsdl定义的版本化
本章探讨用来对一个wsdl定义的不同部分进行版本化的不同技术,主要侧重于wsdl操作的版本化。不同章节提供了对于添加、重命名和删除操作,以及修改操作消息交换模式和相关故障消息的指南与示例。
同样讲到的还包括对于端口类型定义和具体描述的不同部分进行版本化的技术。最后一节介绍wsdl语言的哪些部分可以被用来支持潜在的向前兼容性。
第22章 消息模式的版本化
本章讲解与基于xml schema消息版本化相关的复杂话题,根据第20章给出的三种版本化策略来对这些技术进行组织,分别针对每种版本化策略对添加、删除、重命名和修改现有xml schema构件的版本化方法进行了讲解。在这些小节中探讨了各种不同的 xml schema语言功能,包括使用通配符来支持向前兼容,以及使用可选元素来支持向后兼容。本章所关心的另外一个主要话题是把xml schema命名空间用于版本化的目的。
第23章 高级版本化
最后一章提供了比较混杂的内容,包括版本化的指南、技术和设计考虑事项。它首先介绍了一些与ws-policy表达和断言有关的版本化策略,接着继续介绍使用策略断言来表示终止信息的设计方法,以及利用定制属性来表示不可忽略的未知元素的方法(当使用通配符的时候)。
另外还包括了各种其他的版本化方法,有些与实际的版本化设计模式有关,比如部分理解。本章最后给出了创建和定制你自己的版本号策略的一些提示。
1.7.4 第4部分:附录
附录a 案例研究总结
本附录提供了关于案例研究故事的一个简要总结与结论,它与在actioncon it企业环境中设计的web服务合约有关。
附录b 技术标准的制定过程
介绍了关于w3c如何来组织它的技术委员会的一个概况,以及最初提交的规范如何被发展成为认可标准的过程与阶段的描述。
附录c 字母顺序的伪模式参考
为本书中解释过的所有语言的元素提供了概要的伪模式。这些模式按照字母顺序列出,以便于快速参考。
附录d 本书用到的命名空间与前缀
在本书中用到的命名空间与相关前缀的一个参考列表。
附录e 与本书有关的soap设计模式
本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。