SOA的出现和流行是软件技术(特别是分布计算技术)发展到一定阶段的产物。SOA的概念最初由全球最具权威的IT研究与顾问咨询公司——Gartner于1996年提出。当时对于SOA给出的定义是:“面向服务的体系结构是一种高性能计算方式,它有助于企业在多个应用和使用模式之间分享逻辑和数据。(A service-oriented architecture is a style of multitier computing that helps organizations share logic and data among multiple applications and usage modes.)”由于当时的技术水平和市场环境尚不具备真正实施SOA的条件,因此当时SOA并未引起人们的广泛关注。
回顾软件技术的发展历史,其核心技术之一是软件的基本模型(如图2.1),与软件技术发展密切相关的3个要素是计算机平台、人的思维模式和问题的基本特征,而驱动软件技术不断向前发展的核心动因之一是复杂性控制[33]。在软件技术的发展过程中,构成软件系统的基本元素——软件实体经历了语句、函数、过程、模块、抽象数据类型、对象、构件等多个阶段。软件实体的主要发展趋势是主体化,即内容的自包含性、结构的独立性和实体的适应性[34]。每一种新兴的软件技术的出现,都是为了应对当时最为紧要的某些复杂性控制问题,从而更好地去适应日益开放的开发与应用环境对软件的需求。高级语言的发展是为了控制计算机硬件平台的复杂性,结构程序设计的发展是为了控制程序开发过程和执行过程的复杂性,面向对象的发展则是为了控制系统需求易变所导致的复杂性[33]。
图2.1 软件开发模型发展历程
20世纪80年代以来,面向对象的方法获得了巨大成功。面向对象技术之所以流行是因为它较好地综合了软件开发的3个要素。面向对象技术的基本建模元素是对象及对象间的交互,这种看待现实世界的观点既符合人的思维模式,又符合客观世界的构成规律,因此能够达到问题空间、设计空间和程序空间之间的映射,从而能更容易地控制需求变化所导致的在设计空间和程序空间的“涟漪”效应[33]。当面向对象的方法应用于大规模工业化软件生产环境时,出现了基于构件的软件开发(Component-Based Software Development,CBSD)方法,力求通过组装预先定制好的软件构件来构造应用系统,从而有效地支持软件复用。CBSD体现了“购买,而不是重新构造”的哲学。伴随着互联网的浪潮,在构件技术逐步成熟的基础上,由于人们对更大粒度软件复用和更灵活软件互操作所带来的业务敏捷性的高度关注,越来越多的企业将业务转移到互联网领域,带动了电子商务的蓬勃发展。为了能够将公司的业务打包成独立的、具有很强伸缩性的基于互联网的服务,Web服务的概念被提出,这可以说是SOA的开端。作为SOA中最为核心的概念,Web服务是软件构件在开放、动态、多变的Internet环境下的一种自然扩展和延伸,它作为应用开发基本单元,能够快速、便捷、低耗地开发和组装应用系统,并有效地解决在分布、异构的环境中的数据、应用和系统集成的问题。
新技术的兴起必然伴随着一系列技术标准和规范的诞生,SOA也是如此。短短几年之内,在厂商、研究人员和标准化组织的共同努力下,已经制定出一大批SOA标准和规范,有力地推动了SOA的发展。2002年12月,Gartner指出SOA是“现代应用开发领域最重要的课题”。2005年,一些IT组织成功建立并实施SOA应用软件,不少IT厂商看到其价值,也纷纷推出自己的SOA解决方案和产品。
Gartner认为,新兴软件技术的发展过程,一般要经历“启动阶段”“被夸大的预期峰值”“幻灭的低谷”“启蒙的斜坡”和“生产力平原”等几个阶段。1996年,SOA首次被提出时,正值CORBA技术的“启动阶段”;而当1999年,CORBA进入“幻灭的低谷”时,J2EE开始启动,并迅速在企业计算方面得到大规模的普及和流行;2002年,当人们发现J2EE也并非预期中的银弹时,Web服务终于走上了历史的舞台;2005年,SOA的概念炒作达到了顶峰;而在2006年,SOA走入低谷,这意味着人们开始对SOA进行更加理性的思考;进入2008年,SOA开始从Gartner的技术成熟度曲线中的“幻灭的低谷”走向“启蒙的斜坡”乃至“生产力平原”阶段,这意味着SOA已经走出了炒作,进入更加务实的落地阶段。整体上看,SOA仍然处于成长上升阶段,还未真正广泛普及,还未形成稳定的价值。
Web服务开始流行以后,互联网迅速出现了大量的基于不同平台和语言开发的Web服务组件。为了能够有效地对这些为数众多的组件进行管理,人们迫切需要找到一种新的面向服务的分布式Web计算架构。该架构要能够使这些由不同组织开发的Web服务能够相互学习和交互,保障安全以及兼顾复用性和可管理性。由此,人们重新找回SOA,并赋予其时代的特征。需求推动技术进步,正是这种强烈的市场需求,使得SOA再次成为人们关注的焦点。未来几年SOA将进入应用市场主导的理性发展阶段,人们将把更多的关注点放在SOA如何“落地”,即用户如何成功实施SOA并创造实际价值等方面。
回顾SOA发展历程,我们把其大致分为3个阶段。(www.xing528.com)
(1)孕育阶段:这一阶段以XML技术为标志,时间大致从20世纪90年代末到21世纪初。虽然这段时期很少提到SOA,但XML的出现无疑为SOA的兴起奠定了稳固的基础。可扩展标记语言(XML)是由W3C创建的,源自流行的标准通用标记语言(SGML),它在20世纪60年代后期就已经存在。这种广泛使用的元语言允许组织定义文档的元数据,从而实现企业内部和企业之间的电子数据交换。由于SGML比较复杂,实施成本很高,因此很长时间里只用于大公司之间,限制了它的推广和普及。
通过XML,开发人员摆脱了HTML语言的限制,可以将任何文档转换成XML格式,然后跨越互联网协议传输。借助XSLT,接收方可以很容易地解析和抽取XML格式的数据。这使得企业既能够将数据以一种统一的格式描述和交换,又不必负担SGML那样高的成本。事实上,XML实施成本几乎和HTML一样。
XML是SOA的基石。XML规定了服务之间以及服务内部数据交换的格式和结构。XSL Schema保障了消息数据的完整性和有效性,而XSLT使得不同的数据表达能够通过Schema映射而互相通信。
(2)发轫之始:2000年以后,人们普遍认识到基于公共/专有互联网之上的电子商务具有极大的发展潜力,因此需要创建一套全新的基于互联网的开放通信框架,以满足企业对电子商务中各分立系统之间通信的要求。于是,人们提出了Web服务的概念,希望通过将企业对外服务封装为基于统一标准的Web服务,实现异构系统之间的简单交互。
这一时期,出现了3个著名的Web服务标准和规范:简单对象访问协议(SOAP)、Web服务描述语言(WSDL),以及通用描述、发现与集成(UDDI)协议。这3个标准可谓Web服务三剑客,极大地推动了Web服务的普及和发展。短短几年之间,互联网上出现了大量的Web服务,越来越多的网站和公司将其对外服务或业务接口封装成Web服务,有力地推动了电子商务和互联网的发展。Web服务也是互联网Web 2.0时代的一项重要特征。
(3)成长阶段:从2005年开始,SOA推广和普及工作开始加速。不仅专家学者,几乎所有关心软件行业发展的人士都把目光投向SOA。一时间,SOA频频出现在各种技术媒体、新产品发布会和技术交流会上。各大厂商也逐渐放弃成见,通过建立厂商间的协作组织共同努力制定中立的SOA标准。这一努力最重要的成果体现在3个重量级规范上:SCA(Service Component Architecture,服务构件架构)、SDO(Service Data Objects,服务数据对象)和WS-Policy(Web Services Policy Framework,Web服务策略框架)。SCA和SDO构成了SOA编程模型的基础,而WS-Policy建立了SOA组件之间安全交互的规范。这3个规范的发布,标志着SOA进入了实施阶段。
Web服务则是当今最为流行的SOA架构实现技术,它是在企业完成了信息化建设之后,需要彼此通过Internet进行深入协作的背景下产生的,它更加关注在应用层面上互操作问题的解决。需要指出的是,Web服务仅仅是开启了SOA实践的大门,要在开放、动态、多变的Internet环境下,基于SOA架构理念,实现企业间高效、灵活、可信、协同的服务资源共享和利用,仍需要更多的相关技术、规范、标准以及最佳实践的支持。从整体架构角度看,人们已经把关注点从简单的Web服务拓展到面向服务体系结构的各个方面,包括安全、业务流程和事务处理等。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。