首页 理论教育 面向服务方法:解决面向对象和组件缺陷的解决方案

面向服务方法:解决面向对象和组件缺陷的解决方案

时间:2023-11-23 理论教育 版权反馈
【摘要】:面向服务方法作为应对面向对象及面向组件的缺陷的解决方案出现。与前面的面向机器、面向过程、面向对象和面向组件等相比,SOA超越了软件开发语言本身,是一种面向服务的架构,与软件开发语言无关。为了能够有效地对这些为数众多的组件进行管理,人们迫切需要找到一种新的面向服务的分布式Web计算架构。

面向服务方法:解决面向对象和组件缺陷的解决方案

1.面向服务编程

面向服务用来描述服务之间的松耦合,松耦合的系统来源于业务,而面向对象的模型是紧耦合。面向服务的体系结构不是新鲜事物,是对传统的面向对象模型的替代模型。面向服务编程(SOP,Service-Oriented Programming)的发展并不是一蹴而就的,是经历了数十年渐进的演化历程。面向服务方法作为应对面向对象及面向组件的缺陷的解决方案出现。从各方面看,服务都是组件的一个本质上的飞跃,就像组件是对象的一个本质上的飞跃一样。在软件行业中,面向服务是我们目前所知的构建可维护的、健壮的、安全的应用程序的最佳方案,也是最可行的方案。

SOP是一种体系结构,目标是在软件代理交互中获得松散耦合。一个服务是一个服务提供者为一个服务消费者获得其想要的最终结果的一个工作单元。服务者与消费者都以软件代理代表他们的角色。

服务与消息的关系如图2-2所示。

图2-2 服务与消息

SOP的思想不同于面向对象的编程,面向对象编程建议应该将数据与操作绑定,因此在面向对象编程风格中,每张CD与其所对应的CD播放机,不可分割。而SOP为了解决异构性、互操作性和需求变更问题,构建具有松散耦合、位置透明、协议独立三个特征的应用程序服务。

2.面向服务编程的发展状况

近年来,面向服务的体系结构(SOA,Service-Oriented Architecture)的研究已经成为热点。与前面的面向机器、面向过程、面向对象和面向组件等相比,SOA超越了软件开发语言本身,是一种面向服务的架构,与软件开发语言无关。但就软件开发本身来说,SOA是一种技术,又超越了所有具体的技术。

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

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

1)孕育阶段

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

可扩展标记语言(Extensibl Markup Language,XML)系W3C所创建,源自流行的标准通用标记语言(Standard Generalised Markup Language,SGML),它在20世纪60年代后期就已存在。这种广泛使用的元语言,允许组织定义文档的元数据,实现企业内部和企业之间的电子数据交换。SGML比较复杂,实施成本很高,因此很长时间里只用于大公司之间,限制了它的推广和普及。

通过XML,开发人员摆脱了HTML语言的限制,可以将任何文档转换成XML格式,然后跨越互联网协议传输。借助XML转换语言(Extensible Stylesheet Language Transformation,XSLT),接收方可以很容易地解析和抽取XML的数据。这使得企业既能够将数据以统一的格式描述和交换,同时又不必负担SGML的高成本。事实上,XML实施成本几乎和HTML一样。(www.xing528.com)

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

2)出生阶段

2000年以后,人们普遍认识到基于公共——专有互联网之上的电子商务具有极大的发展潜力,因此需要创建一套全新的基于互联网的开放通信框架,以满足企业对电子商务中各分立系统之间通信的要求。于是,人们提出了Web服务的概念,希望通过将企业对外服务封装为基于统一标准的Web服务,实现异构系统之间的简单交互。这一时期,出现了简单对象访问协议(Simple Object Access Protocal,SOAP)、Web服务描述语言(Web Services DescrIPtion Language,WSDL)、通用服务发现和集成协议(Universal Discovery DescrIPtion and Integration,UUDI),这三个标准可谓“Web服务三剑客”,极大地推动了Web服务的普及和发展。短短几年之间,互联网上出现了大量的Web服务,越来越多的网站和公司将其对外服务或业务接口封装成Web服务,有力地推动了电子商务和互联网的发展。Web服务也是互联网Web2.0时代的一项重要特征。

3)成长阶段

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

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

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

3.面向服务编程的主要特点

(1)利用现有的资产。方法是将现有资产包装成提供企业功能的服务。组织可以继续从现有的资源中获取价值,而不必重新从头开始构建。

(2)更易于集成和管理复杂性。将基础设施和实现发生的改变所带来的影响降到最低限度。因为复杂性是隔离的,当更多的企业一起协作提供价值链时,会变得更加重要。

(3)更快地整合现实。通过利用现有的构件和服务,可以减少完成软件开发生命周期所需的时间。这使得可以快速地开发新的业务服务,并允许组织迅速地对改变做出响应和缩短开发时间。

(4)减少成本和增加重用。通过以松散耦合的方式公开业务服务,企业可以根据业务要求更轻松地使用和组合服务。

(5)SOA业务流程是由一系列业务服务组成的,可以更轻松地创建、修改和管理它来满足不同时期的需要。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈