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