本文审视XML、Web服务及SOA间的关系,并解释厂商和标准组织如何从那些持续浮现的Web服务规范中形成奇妙的竞争与协同竞技场。然后我们从应用架构简短历史的叙述着手来对过去的二十年作一个总结。
1 SOA时间轴(从XML到Web服务再到SOA)
我们从讲述形成当前SOA平台的关键工业开发入手来建立时间轴。然后我们看一看SOA在它的权限范围内,如何作为当代架构的平台而改变了XML与Web服务技术的角色。
1.1. XML简史
如同HTML,扩展标记语言(XML)系W3C所创建,源自流行的标准通用标记语言(SGML),它在60年代后期就已存在。这是广泛使用的元语言,允许组织增加原始文档数据。
XML在90年代后期的电子商务运动中声名鹊起,服务器端脚本语言可以经由互联网而处理业务。通过XML的使用,开发者能够给任何片段附加上意义和上下文,再跨越互联网协议传输。
XML不仅被用于以标准化的方式来表达数据,其语言自身还被用作一系列的附加规范的基础。XML Schema定义语言(XSD)与XSL转换语言(XSLT)都以XML表达。这些规范,事实上已成为关键核心XML技术集的关键部分。
XML表达架构代表了SOA的基础层。在其内部,XML建立了在服务各处流动的消息格式与结构。XSD schemas保持消息数据的完整与有效性,而且XSLT使得不同的数据表达间通过schema映射而能够互相通信。换句话说,没有XML你在SOA内寸步难行。
1.2. Web服务简史
在2000年,W3C接受了一项关于简单对象访问协议(SOAP)规范的提案。这个规范本来设计用于(并在一些案例替代)专有RPC通信。想法是对于在构件间传输参数数据可以序列化成XML传送,然后支序列化成其原生格式。
很快,公司及软件厂商开始看到,对于推进通过构建于专有-免费的互联网通信框架之上的电子商务技术,存在日益巨大的潜力。这最后导致了创建一个纯粹的、基于Web的分布式技术能充分利用概念标准化的通信框架,来桥接组织之间和组织内部所存在的巨大差异。这个概念被称为Web服务。
Web服务最重要的部分是其公共接口。它是分配服务识别并使其激活的核心信息块。因此,首先支持Web服务的是Web服务描述(WSDL)。W3C第一份WSDL评议提案是在2001年,此后还在不断地修订这一规范。
为了进一步的开放协同性的愿景,Web服务需要一个互联网友好的、XML兼容的通信格式,以便能够建立一个标准化的通讯框架。尽管有别的选择,譬如可以考虑XML-RPC,但SOAP因为工业界的偏好而胜出,并且保留了最初的通讯标准用于Web服务。
为支持SOAP的新角色,W3C随之发布了更新版本的规范,同时考虑了RPC风格的与文档风格的消息类型。而后者在SOA里面更为常用。最终,“SOAP”一词不再代表“简单对象访问协议”的首字母缩写。到了规范的1.2版,它变成了一个独立的术语。
完成第一代Web服务标准家族的是UDDI规范,它原本由UDDI.org所开发,被递交到OASIS之后,它继续与UDDI.org一起合作开发。这个规范考虑在组织内部及组织边界之外来创建标准化的服务描述的注册。UDDI提供了潜在的对Web服务在一个集中的位置注册,在此处能够被服务请求者所发现。WSDL与SOAP不同,UDDI尚未被工业界所普遍接受,并且保留了一个可选的SOA扩展。
开发定制的Web服务可适应变化的业务需求,并且第三方市场出现了促进各种实用服务的销售或租赁。现存的通讯平台,譬如面向消息的中间件(MOM)产品,结合Web服务可支持SOAP之外的其他消息协议。一些组织可迅速合并Web服务,以促进B2B数据交换经常要转变为EDI(电子数据交换)替代品的需求。
1.3. SOA简史
不久前组织才开始意识到只需要缓和地替代现存的分布式应用,Web服务可成为独立的架构平台---可使用Web服务技术集的效益来实现企业中服务概念的平台。这样,面向服务架构开始进入IT的主流。
在这一点SOA频繁地以不同的方式被分类,经常依赖于构建服务所用的实现技术。早期的模型,主要从Web服务标准初始系列中得到灵感,将SOA定义为一个围绕三个基本的构件的架构模型:服务请求者,服务服务提供者与服务注册(图1)。
图1. SOA的早期形态第一代Web服务标准实现此模型的以下方面:
- WSDL描述服务。
- SOAP提供了用于服务及其请求者的通讯格式。
- UDDI提供了标准化的服务注册格式。
从物理架构的角度,基于Web服务的SOA第一次变异实际上超越了原始SOA模型。你或许能回忆起原始SOA不需要使用服务注册。作为替代,发现被归类为当代SOA的一个特征,通过面向服务原则在服务层面被提倡。
我们的原始SOA模型在今天可轻易获得,因为它已被所有主要厂商的开发及运行平台所支持。这些相同厂商都有关于SOA的远大计划,其中许多现在已经能够自我证明。当代SOA的诸多特征,大都是过分主动的开发与协作的结果,已经产生了一系列第一代Web服务平台的扩展。知名的“第二代”或“WS-*”规范,这些扩展处理特殊的功能区域,Web服务技术平台全面提升至企业水平。
补充WS-*领域对于将面向服务概念引入业务分析的世界也很重要。通过面向服务,业务逻辑能够清晰地被封装,并从根本的自动化技术中抽象。这个愿景藉由业务流程定义语言的提升而得到进一步支持,最知名的是WS-BPEL。这不仅考虑到将传统的业务流程管理(BPM)模型解决成一系列的服务,更进一步提供具体的和可执行的格式充分表达业务逻辑的语言能力,填补了分析与实现间的空隙。
这些及其他工业影响已经扩大了SOA的潜在范围。如同更多的当代特征被增加,也很可能今天我们所归类的当代SOA,会形成未来原始SOA的基础。
SOA是一个真正的进化。今天的结果明显是被不同的相关标准组织和软件厂商主动驱动的结果。通过受协作与竞争的混合刺激的不稳定环境,扩展被作为战略定位,每个都定义了我们称为当代SOA技术平台一个特定部分。在第2节,我们近距离看看标准的开发过程。
1.4. SOA如何改造XML与Web服务
如同任何架构,SOA引入了边界和规则。尽管当代SOA可能由XML及Web服务技术平台所构成,但这些平台需要经历大量的变化,以便其各自的技术被适当定位并在面向服务架构范围内加以利用。
使用XML或Web服务的传统分布式应用环境因此肯定有一些重新实现,面向服务的设计原则需要在技术与心态方面都进行改变。以下是当你必须对现存实现翻工时,你可能面对的一些潜在问题示例。
- SOA现在需要数据表达与服务建模标准表达保持一致。这个相当含糊的需求有许多含意,并主要促进内在协同性。
- SOA依赖于负责所有服务间通信的SOAP通讯。结果,所有需要XML的地方,一般也会有SOAP消息,以照顾传输、临时处理与路由及最终交付。XML文档与关联的XSD schema现在经常需要有意地与SOAP通讯一起建模。
- SOA使用标准化的文档风格的通讯。从RPC风格迁移到文档风格的消息给服务描述的设计强加了变化。特别地,接口特征需要以更普通的术语表示,并全面增加操作粒度。
- 由于强调文档风格的SOAP消息,SOA促进内容及高智能模型。这个支持服务的无状态及自治,并使消息传输的频度最小化。然而先前的RPC风格的方法支持带有目标数据的小颗粒XML文档传输,在SOA内的XML文档经常需要代表不止一个数据语境的绑定数据。
- 直到WS-*扩展的高阶信息能力普遍流行,许多应用都将需要配备SOAP报头来实现临时解决方案以管理复杂的消息交换。一些更急迫需求包括管理与关联。这些临时的设计有效地建立了转变模型,需要时可轻易地迁移到工业标准的实现。
要点总结
核心XML技术集已成为分布式互联网架构的通用部分。现在也提供基础数据表达及SOA数据管理层。
第一代Web服务架构来自关键标准开发:WSDL、SOAP与UDDI。然而UDDI对于多数据环境而言仍旧是一个可选的发现机制,WSDL与SOAP已经成为构建在XML层之上定义SOA基本通信框架的核心技术。
SOA充分利用XML与Web服务率先铺设的道路。它将久经考验的概念与先进技术的结合,已经被IT社团所充分接受。
尽管当代SOA已经形成并有了对XML与Web服务的工业级接受度,SOA的到来对于已有XML及Web服务的传统应用还是带来了改变。
推荐:SOA的进化(二)标准组织与贡献厂商
(责任编辑:铭铭)