SOA的发展历史与标准规范

日期: 2008-01-23 作者:王洪伟 来源:TechTarget中国

  1. SOA发展回顾

  SOA的概念最初由Gartner公司提出,由于当时的技术水平和市场环境尚不具备真正实施SOA的条件,因此当时SOA并未引起人们的广泛关注,SOA在当时沉寂了一段时间。伴随着互联网的浪潮,越来越多的企业将业务转移到互联网领域,带动了电子商务的蓬勃发展。为了能够将公司的业务打包成独立的、具有很强伸缩性的基于互联网的服务,人们提出了Web服务的概念,这可以说是SOA的发端。

  Web服务开始流行以后,互联网迅速出现了大量的基于不同平台和语言开发的Web服务组件。为了能够有效地对这些为数众多的组件进行管理,人们迫切需要找到一种新的面向服务的分布式Web计算架构。该架构要能够使这些由不同组织开发的Web服务能够相互学习和交互,保障安全以及兼顾复用性和可管理性。由此,人们重新找回面向服务的架构(Service-Oriented Architecture,SOA),并赋予其时代的特征。需求推动技术进步,正是这种强烈的市场需求,使得SOA再次成为人们关注的焦点。回顾SOA发展历程,我们把其大致分为了三个阶段。下面将分别介绍每个阶段的重要标准和规范。

  1.1 孕育阶段

  这一阶段以XML技术为标志,时间大致从上世纪九十年代末到本世纪初。虽然这段时期很少提到SOA,但XML的出现无疑为SOA的兴起奠定了稳固的基石。

  可扩展标记语言(Extensibl Markup Language,XML)系W3C所创建,源自流行的标准通用标记语言(Standard Generalised Markup Language,SGML),它在上世纪60年代后期就已存在。这种广泛使用的元语言,允许组织定义文档的元数据,实现企业内部和企业之间的电子数据交换。由于SGML比较复杂,实施成本很高,因此很长时间里只用于大公司之间,限制了它的推广和普及。
 
  通过XML,开发人员摆脱了HTML语言的限制,可以将任何文档转换成XML格式,然后跨越互联网协议传输。借助XML转换语言(Extensible Stylesheet Language Transformation,XSLT),接受方可以很容易地解析和抽取XML的数据。这使得企业既能够将数据能够以一种统一的格式描述和交换,同时又不必负担SGML那样高的成本。事实上,XML实施成本几乎和HTML一样。

  XML是SOA的基石。XML规定了服务之间以及服务内部数据交换的格式和结构。XSD Schemas 保障了消息数据的完整性和有效性,而XSLT使得不同的数据表达能沟通过Schema映射而互相通信。

  1.2 发轫之初

  2000年以后,人们普遍认识到基于公共——专有互联网之上的电子商务具有极大的发展潜力,因此需要创建一套全新的基于互联网的开放通信框架,以满足企业对电子商务中各分立系统之间通信的要求。于是,人们提出了Web服务的概念,希望通过将企业对外服务封装为基于统一标准的Web服务,实现异构系统之间的简单交互。这一时期,出现了三个著名的Web服务标准和规范:

  ◆ 简单对象访问协议(Simple Object Access Protocal,SOAP)
  ◆ Web服务描述语言(Web Services Description Language,WSDL)
  ◆ 通用服务发现和集成协议(Universal Discovery Description and Integration,UUDI)

  这三个标准可谓Web服务三剑客,极大地推动了Web服务的普及和发展。短短几年之间,互联网上出现了大量的Web服务,越来越多的网站和公司将其对外服务或业务接口封装成Web服务,有力地推动了电子商务和互联网的发展。Web服务也是互联网Web 2.0时代的一项重要特征。

  1.3 成长阶段

  从2005年开始,SOA推广和普及工作开始加速。不仅专家学者,几乎所有关心软件
行业发展的人士都开始把目光投向SOA。一时间,SOA频频出现在各种技术媒体、新产品发布会和技术交流会上。

  各大厂商也逐渐放弃成见,通过建立厂商间的协作组织共同努力制定中立的SOA标准。这一努力最重要的成果体现在3个重量级规范上:SCA/SDO/WS-Policy。SCA和SDO构成了SOA编程模型的基础,而WS-Policy建立了SOA组件之间安全交互的规范。这三个规范的发布,标志着SOA进入了实施阶段。

  从整体架构角度看,人们已经把关注点从简单的Web服务拓展到面向服务体系架构的各个方面,包括安全、业务流程和事务处理等。

  2. 标准与规范

  2.1 标准与规范的区别

  大多数人习惯上把“标准”与“规范”这两个术语交替使用,这样做基本没有问题。但严格地讲,二者还是有一定差异的。规范是标准的建议文档。这就意味着,标准一般是由业界公认的标准化组织制定和发布。而规范要灵活的多,多为厂商或非标准化组织发布。事实上,很多规范并不是标准,比如SDO和SCA,而是由某些厂商或厂商联盟制定发布。但是凭借这些厂商强大的市场地位,这些规范往往会成为事实上的标准。

  我们大体上可以把SOA标准分为XML标准集、Web服务标准集和SOA参考模型,下面我将分别介绍,为叙述方便,不再严格区分标准和规范,统一称作标准。

  2.2 XML标准集

  2001年10月,W3C发布了XML信息集(XML Information Set,XML Infoset)。
Infoset是一个抽象的数据模型,它兼容基于文本的XML 1.0,也是所有最新XML规范(XML Schema、XML Query和XSLT 2.0)的基础。由于Web服务架构是以XML Infoset为基础,而不是以某一特定的表现形式为基础,使得该架构及其核心协议组件可与各种编码技术兼容。

  除了基于纯文本的Infoset编码技术以外,Web服务架构还需要支持另外一种编码技术——即允许不透明的二进制数据与传统的基于文本的标记交织在一起。由于XML Infoset仅支持基于文本的XML,W3C于2005年初发布了XML二进制优化封装协议(XML-binary Optimized Packaging,XOP)。XOP格式使用MIME将原始二进制数据引入到XML 1.0文档中,而不采用base64编码。通过其配套规范——SOAP 消息(Transmission Optimization Method,MTOM)实现将二进制XOP格式绑定到SOAP。XOP和MTOM是将原始二进制数据与基于文本的XML混合在一起的首选方法,它们取代了目前普遍遭到反对的SOAP with Attachments(SwA)和WS-Attachments/DIME。

  2.3 Web服务标准集

  经过几年的努力,Web服务标准集已经初具规模,内容涵盖传输层、消息机制、编程模型、服务发现和描述、可靠性、事务处理、安全和管理等方面。尽管其中部分内容还处于规范级别,但由于受到广泛的关注和支持,成为正式标准只是时间上的问题。

  2.4 SOA参考模型

  SOA参考模型由结构化信息标准促进组织制定和发布。事实上,它并不是一个标准,而是SOA架构的一个抽象框架,统一了SOA相关术语用法并且定义了这些术语的涵义,同时还明确定义了SOA各组件之间的关系。

  3. 标准化组织对标准的贡献

  3.1结构化信息标准促进组织(Organization for the Advancement of Structured Information Standards,OASIS)

  OASIS是一个非赢利的国际协会,致力于电子商务相关标准的制定和推广,也是目前制定Web服务标准最多的一个组织。除了制定通用的电子商务、Web服务和安全标准之外,OASIS还制定了很多针对行业的电子标准。OASIS理事会成员几乎全部来自微软、IBM、BEA system、Oracle、Sun、SAP AG、诺基亚等业界大公司。

  OASIS为SOA专门成立了六个技术委员会(Technical Committees),分别负责制定电子商务、Web Service开发和部署、服务质量以及面向服务架构等方面的标准。

  3.2 开放SOA合作组织(Open SOA Collaboration,OSOA)

  OSOA是一个非正式的厂商联盟,使得各厂商能够共同开发一个语言中立的编程模型。该编程模型帮助企业软件开发人员能够最大限度的发挥SOA架构的特性和优势。目前加入OSOA的厂商包括IBM、BEA、SAP、Oracle等。尽管OSOA不是一个标准化组织,但由于有IBM、BEA等业界厂商的支持,它制定的规范很可能会成为事实上的标准。因此,我们可以把它看作一个准标准化组织。OSOA成立了两个项目组,分别负责制定SCA和SDO规范。

  3.3万维网联盟(World Wide Web Consortium,W3C)

  W3C成立于1994年,主要负责制定Web相关标准和规范,比如HTML、CSS等。W3C专门成立了Web服务专区,下辖六个工作组,负责制定Web服务相关的标准。W3C对Web服务的发展可谓功不可没,像非常著名的SOAP和WSDL皆出自于W3C。

  3.4 Web服务互操作组织(Web Services Interoperability organization,WS-I)

  WS-I是一个开放的厂商联盟,鼓励任何对Web服务有兴趣的厂商加盟并贡献自己的力量。 它主要致力于提升Web服务基于平台、操作系统和编程语言中立的互操作能力,其成员几乎覆盖了所有重量级厂商,如IBM、微软、Sun、Oracle和BEA等。

  3.5 互联网工程任务组(Internet Engineering Task Force,IETF)

  The IETF(因特网工程工作小组)是定义标准因特网操作协议(像TCP/IP)的团体,IETF接受国际互联网协会Internet架构委员会(Internet Architecture Board,IAB)的监督管理。IETF的成员分别来自于互联网协会的个人或者组织成员。

  4.厂商之间的博弈

  谁控制了标准,谁就控制了游戏规则,就能够在未来的软件行业立于不败之地。因此,几乎当前所有的主要工具供应商和平台提供商都参与了SOA标准的制定,包括微软、IBM、BEA、Oracle、Sun、SAP AG、诺基亚、IONA、Xcalia、Zend 、Sonic Software。

  表面上,标准化组织都声称自己独立于任何厂商,强调其独立性和自主性。但如果观察这些组织理事会的成员构成,就会发现大部分成员都来自上面提到的业界寡头,来自欧美发达国家,可以说是“大国俱乐部”和“大厂俱乐部”。

  在参与制定标准的同时,各大厂还开始并购优秀的行业SOA解决方案提供商,积累针对特定行业标准的实施经验,以期获取竞争优势。2006年8月,IBM宣布成功收购了一家专门提供面向行业的 SOA软件与服务的私有企业——Webify解决方案公司。Webify公司专注于提供帮助企业加速开发和部署应用的软件产品,以及数以百计的针对特定行业的基于标准的预置加速器、工具和框架,用于解决特定行业的业务问题,如帮助医疗保健行业符合《健康保险便携性及责任性法案》(HIPAA)的要求、帮助保险行业满足《国际保险业数据标准》(ACORD)等。此次收购将进一步增强IBM在SOA领域的领导地位。 Webify在语义方面的专业技术与IBM在开放标准开发利用丰富经验的结合,能够更好地解决特定垂直行业的常见业务问题。

  5.标准的发展趋势

  2007年将有三个重量级的标准问世,它们目前都属于规范级别。它们就是SCA、SDO、WS-Policy。SCA和SDO构成了SOA组件开发的核心,而WS-Policy则成为SOA组件间安全通讯的标准,其作用类似于安全套接层在浏览器与服务器通讯中的重用。事实上,WS-Policy的基本原理与SSL是一致的。

  今后标准开发将具有一个共同的特点,就是标准与SOA架构的协调性。也就是说,无论是已有的标准还是正在开发的标准,都必须符合SOA架构的要求,同时要考虑单个标准与其它SOA标准之间的协调一致。

  2007年将会有许多SOA的规范升级为标准。SCA和SDO计划于2007年由OASIS审核通过,而WS-Policy也将于2007年8月正式成为W3C标准。

  基于市场的强劲需求,各标准化组织将继续加大在制定SOA相关标准上的投入力度,标准的制定和发布周期将大大缩短。比如对WS-Policy,W3C制定了精密的时间表。目前WS-Policy的发布时间表是这样安排的,2007年3月发布候选推荐版本(Candidate Recommendation drafts),2007年7月发布提议推荐版本(Proposed Recommendation drafts),2007年8月发布W3C推荐版本(W3C Recommendations)。W3C历来以严谨和审慎著称,发布一个标准平均需要3至5年的时间。但就WS-Policy而言,从2006年4月 IBM和微软公司将WS-Policy规范提交给W3C算起,按照目前的时间表,整个标准发布周期仅为16个月。

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

相关推荐

  • SAP收购CallidusCloud 与Salesforce竞争

    一直被称为后台办公巨头的SAP现在似乎也想在前台办公大展拳脚。 最新的迹象是SAP收购CallidusClou […]

  • 事件驱动框架和SOA在空军的应用

    空军正在利用SOA来改善数据共享,并实时跟踪战机,美国空军机动司令部的Michael Marek解释了企业可从中学习的经验。

  • 揭秘New Relic APM技术细节

    New Relic应性能管理(APM)套件主要用于Web软件开发。它允许用户在面向服务的架构(SOA)上跟踪关键事务性能,并且支持代码级别的可见性来评估特定代码段和SQL语句对性能的影响

  • 仅凭SOA和云无法解决业务数据管理风险问题

    SOA和云可以是某些恼人问题高效的解决方案;这一点我们已经知道了。但是也要记住它们并不是所有事情的直接答案,特别是当你的问题是业务数据管理风险,而不是技术问题时。