本文审视
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
服务的传统应用还是带来了改变。