当前位置:文档之家› SOA及其实现技术研究

SOA及其实现技术研究

SOA及其实现技术研究
SOA及其实现技术研究

沿海企业与科技

COASTALENTERPRISESANDSCIENCE&TECHNOLOGY

2007年第12期(总第91期)

NO.12,2007(CumulativelyNO.91)

SOA及其实现技术研究

刘景景

[摘

要]

文章在介绍面向SOA(服务体系结构)概念的基础上,系统剖析SOA的体系结构模型,总结SOA所具有

的特征,对SOA的实现技术———WebServices与SOA的关系进行研究,并提出基于WebServices实现SOA的完整过程。

[关键词]SOA;实现技术;Web服务

[作者简介]刘景景,池州学院机械与电子工程系助教,南京航空航天大学硕士研究生,研究方向:通信工程等,安徽

池州,247000

[中图分类号]TP31

[文献标识码]A

[文章编号]1007-7723(2007)12-0071-0004

一、SOA的概念

SOA[1]

(面向服务体系结构)的概念是GartnerGroup于1996年提出的。SOA是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来,接口是采用中立的方式进行定义的,独立于实现服务的硬件平台、操作系统和编程语言,使得构建在各种这样的系统中的服务可以用一种统一和通用的方式进行交互。

这种具有中立的接口定义(没有强制绑定到特定的实现上)的特征称为服务之间的松耦合。松耦合系统的优点有二:一是它的灵活性;二是当组成整个应用程序的每个服务的内部结构和实现逐渐地发生改变时,它能够继续存在。而另一方面,紧耦合意味着应用程序的不同组件之间的接口与其功能和结构是紧密相连的,因而当需要对部分或整个应用程序进行某种形式的更改时,它们就显得非常脆弱。基于SOA不仅能够快速地整合原有软件来满足现在的业务需要,而且使以后应对随需而变的业务、迅速而正确地开发未来的软件成为可能。运用SOA的过程,就是一个业务整合的过程。运用SOA的一套模式、方法来定义出具有适当颗粒度的松耦合服务,并为它们设计良好的接口,以达到这个服务的最大复用性,从而整合整个业务流程,其中最关键的是耦合度、颗粒度以及接口。

二、SOA的模型

SOA是一种服务导向的组件模型,是实现分布

式计算的软件体系架构,其目标是让信息系统变

得更富有弹性,以更快地响应业务单位的需求。这里所说的服务是指软件中的一些处理过程或封装成独立业务模块的程序逻辑单元,可以利用标准协议通过网络来访问和调用,而且接口公开。服务提供者开发出各种各样有用的服务,经过严格测试后把服务发布到公共的服务注册表上,服务消费者(请求者)通过查找服务注册表获得所需要的服务[2][3],然后就可以使用所需要的服务了。SOA架构的体系结构模型通常由以下三部分组成[4]:

1.服务提供者(ServiceProvider)

服务提供者是一可通过网络寻址的实体,它接受和执行来自消费者的请求。它将自己的服务和接口契约发布到服务注册中心,以便服务消费者可以发现和访问该服务。它主要完成以下功能:(1)定义可提供的服务功能;(2)设计并实现这些功能;(3)用WSDL(WebServiceDefinitionLan-

guage)描述这些服务,并用UDDI在服务注册中心

发布WSDL文档。

2.注册中心(UDDI)

服务注册中心是一个包含可用服务的网络可寻址的目录,它是接收并存储服务契约的实体,供服务消费者查询服务之用,服务提供者将服务的信息发布到服务注册中心。服务的信息包括与该服务交互必要的所有内容,如网络位置、传输协议和消息格式等。它主要完成以下功能:(1)增加、删除或修改已经发布服务提供的服务数据;(2)按用户的请求从注册表中查询服务数据。

3.服务消费者

(请求者)(ServiceConsumer)服务消费者可以是一个应用程序、需要一个服务的另一个服务或者一个软件模块,它从注册中

心查询需要的服务,并通过传输机制来绑定该服务,然后通过接口契约规定格式的请求来执行服务功能。主要完成以下功能:(1)发现提供所需服务的WSDL文档,通常通过访问服务注册表项来实现;(2)在WSDL的基础上,通过SOAP协议来与要访问的服务通信,服务的提供者与服务的消费者是彼此分开的,注册中心的服务信息位于两者之间,它将服务提供者所提供的服务按一定的标准组织并分类,并向消费者发布服务接口,消费者使用查询功能发现提供者。服务提供者与服务消费者通过事先定义好的契约进行交互,如图1。

SOA中,每个实体都扮演着服务提供者、消费者和注册中心这三种角色中的一种或多种。图1展示了SOA中的角色与角色间的协作。这些协作遵循“发布、发现、绑定和调用”模型。协作的流程是:服务消费者查询服务注册中心,查找其要请求的服务,执行动态服务定位。如果服务存在,注册中心就给消费者提供服务接口契约和服务提供者的端点地址。然后,绑定服务,再调用执行服务功能。

在SOA中,角色间协作操作包括:(1)发布。为了使服务可被发现并使用,需要发布服务描述以使服务使用者发现和调用服务。(2)查找。服务请求者查询服务注册中心,查找满足需求的服务并定位服务地址。(3)绑定和调用。在服务请求者从服务注册中心查找到服务描述之后,服务使用者根据服务描述中的信息,来调用服务提供者提供的服务。

除了角色和角色间的操作,SOA中还有两个关键点:

(1)服务。允许服务使用者调用的功能。(2)服务描述。服务描述定义了服务使用者与服务提供者交互的方式,包括服务请求和响应的格式、服务请求的前提条件和服务质量级别等内容。

三、SOA的特征

SOA可以解决软件领域一直以来存在的问题:如何重用软件功能。SOA是一种粗粒度、松散耦合的服务架构,其服务之间通过简单、精确定义的接口进行通信,不涉及底层编程接口和通信协议。这种模型具有以下的基本特征,从而提供了软件重用能力[5][6]:

1.服务的封装(Encapsulation)。把服务封装成可以被不同业务流程重复使用的业务组件。它隐藏所有实现细节,不管服务内部如何修改,使用什么平台、什么语言,只要保持接口不变,就不会影响最终用户的使用。

2.服务的重用(Reuse)。一个服务是一个独立的实体,与底层实现和用户的需求完全无关,这极大地方便了服务的重复使用,从而降低了开发成本。

3.服务间的互操作(Interoperability)。服务之间通过既定协议采用同步或异步方式通信。

4.服务是自治的(Autonomous)实体。即服务自身是完全独立的自包含的模块化的。

5.服务的松耦合度(LooselyCoupled)。即服务请求者和服务提供者之间只有接口上的往来,至于服务内部如何更改、如何实现都与服务请求者无关。

6.服务是位置透明的(LocationTransparen-cy)。即服务请求者不需要知道服务的具体位置及是哪一个服务响应了自己的请求,服务请求者关心的是使用一个服务完成了自己要处理的工作就可以了。基于以上特征,SOA中的服务具有硬件特性的特征,即“即插即用”,只要将服务置入特定的企业服务总线,便可以任意使用它。

7.基于模块(或组件)的模型。在SOA框架下,提供可组合性的最小单元是模块(组件)。应用组件是基于某种具体分布式技术实现的业务逻辑模块。整个应用就是由很多个模块组成。通过路由器和适配器的连接

,应用组件可以与其他应用组件

或者外部应用程序交互。应用的组成可以用图2来描述:

SOA通过基于组件模型来构建和引入一个重要的强制约定:组件间的通讯要通过下发到ESB的消息来进行,从而确保了松耦合。构建应用的过程不再是直接去编写Java代码或者C代码,而是要经过组件、服务、应用的多层抽象。这样的结构具有良好的模块性,从而使得构建应用的过程变成了根据业务流程对模块进行组合的过程[7]。

四、SOA的实现技术研究

1.SOA与Web服务

SOA是一个概念、一种理念、一种模型,是面向商业应用的,要实现该模型则需要一种与之对应的具体技术手段。SOA可以与许多其他技术结合在一起使用,然而,组件的封装和聚合在其中扮演着重要的角色[8]。如前所述,SOA可以是一个简单对象、复杂对象、对象的集合、包含许多对象的流程、包含其他流程的流程,甚至还可以是输出单一结果的应用程序的整体集合。在服务之外,可以把它看作是单个实体,但是在其自身中,它可以具有任何级别的复杂性。出于性能方面的考虑,大多数SOA服务并没有下降到单一对象的粒度,并且更适合于大中型组件。除了可能离不开XML和WSDL(Web服务描述语言:WebServicesDefinitionLanguage)之外,SOA并不是特定于语言的。可以用任何编程语言来实现服务,只要这种编程语言可以生成服务并且可以与WSDL结合在一起使用就可以了。SOAP本身并不是绝对需要的,但它是通用的消息传递系统。因此,可以使用几乎任何一种编程语言和支持WSDL的平台来实现SOA中的成员服务。从目前研究SOA应用的几大软件厂商共同协商的标准来看,Web服务技术是SOA最佳实现方式。

国际化标准组织W3C对Web服务的定义如下:“Web服务是由URI标识的软件应用程序,其接口和绑定可以通过使用XML来进行定义、描述和发现,Web服务通过支持基于因特网的协议使用基于XML的消息与其他软件应用程序直接交互。”可以通过基于标准的Internet协议(如,HTTP或SMTP)访问。Web服务技术已经掀起了IT业的浪潮,无论是平台供应商、解决方案供应商,还是服务提供商都纷纷在自己的平台、解决方案以及服务中加入了Web服务。以MicrosoftIBM、Oracle、HP、BEA、SAP等为首的计算机业巨头们无一例外地将自己的软件产品/解决方案全面支持Web服务,同时,他们共同成立了WS-I(WebServiceInter-operabilityOrganization),致力于推广Web服务的全面应用。Web服务技术的目标是实现一种更高层次的分布式计算环境,在这个环境中,业务逻辑能够以与平台和语言无关的方式进行无缝交互。基本的Web服务栈由XML、SOAP、WSDL、UDDI等核心技术组成。

SOA代表着一种标准化、松耦合、粗粒度的软件体系结构,代表着一种不拘泥于具体实现技术的新的软件开发思想。因此,它是一个概念、一种理念、一种模型,是面向商业应用的,要实现该模型则需要一种与之对应的具体技术手段。当前基于Web服务是SOA最佳实现方式。可以说,SOA和Web服务之间的区别在于设计。SOA概念并没有确切地定义服务具体如何交互,而仅仅定义了服务如何相互理解以及如何交互。其中的区别也就是定义如何执行流程的战略与如何执行流程的战术之间的区别。而另一方面,Web服务在需要交互的服务之间如何传递消息有具体的指导原则;从战术上实现SOA模型是通过HTTP传递的SOAP消息中最常见的SOA模型。因而,从本质上讲,Web是实现SOA

的具体方式之一。

尽管我们觉得Web服务是实现SOA的最好方式,但是SOA并不局限于Web服务[3]。其他使用WSDL直接实现服务接口并且通过XML消息进行通信的协议也可以包括在SOA之中。如CORBA和IBM的MQ系统通过使用能够处理WSDL的新特征也可以参与到SOA中来。如果两个服务需要交换数据,那么它们还会需要使用相同的消息传递协议,但是数据接口允许相同的信息交换。

Web服务是由URL(UniformResourceLocator)确定的软件应用,其接口和绑定能够以XML(Ex-tensibleMarkupLanguage)的形式定义、描述和发现,并且支持借助Internet协议,如SOAP(SimpleObjectAccessProtocol)。Web服务采用WSDL(WebServicesDescriptionLanguage)作为其服务接口描述语言、通过UDDI(UniversalDescription,DiscoveryandIntegration)协议规范进行Web服务的网上注册和服务查找定位,并使用SOAP传输协议在网络间进行XML格式的信息交互。基于Web服务的SOA实现主要完成三个操作:(1)发布(Publish)。发布采用基于XML的WSDL语言描述的服务在UDDI注册中心注册。用于描述服务消费者所要求绑定到服务提供者的细节以及服务本身的属性、功能、参数等。WSDL的通用定义允许开发工具创建各种类型的交互的标准接口,同时隐藏它是如何由应用程序代码调用服务的细节。用WSDL描述定义服务的好处在于其文档可以方便快捷地通过SOAP协议传输,并且具有全球统一性,便于服务的重用和集成。(2)发现(Find)。由于服务描述的统一性,服务消费者(Web客户)可以通过Internet到UDDI注册中心方便地查询所需服务和服务提供者。(3)绑定(Bind)。在检索服务时,一旦服务消费者发现合适的服务,服务消费者将根据服务描述中的信息来绑定服务提供者、调用服务,使服务消费者能够真正使用服务提供者。

2.基于Web服务实现SOA的完整过程

用Web服务实现SOA的完整过程可总结如下:

(1)Web服务提供者设计实现Web服务,并将调试正确后的Web服务通过Web服务中介者发布,并在UDDI注册中心注册;

(2)Web服务请求者向Web服务中介者请求特定的服务,中介者根据请求查询UDDI注册中心,为请求者寻找满足请求的服务;

(3)Web服务中介者向Web服务请求者返回满足条件的Web服务描述信息,该描述信息用WSDL写成,各种支持Web服务的机器都能阅读;

(4)利用从Web服务中介者返回的描述信息生成相应的SOAP消息,发送给Web服务提供者,以实现Web服务的调用;

(5)Web服务提供者按SOAP消息执行相应的Web服务,并将服务结果返回给Web服务请求者。

[参考文献]

[1][美]ThomasErl.SOA概念——

—技术与设计[M].王满红,陈荣华,译.北京:机械工业出版社,2007.

[2]杨学瑜,刘文革.面向服务架构在煤矿企业管理信息系统建设中的应用研究[J].中国煤炭,2006,(5).

[3]叶钰,应时,李伟斋,张韬.面向服务体系结构及其系统构建研究[J].计算机应用研究,2005,(2).

[4][美]DirkKrafzig,KarlBanke,DirkSlame.EnterpriseSOA中文版——

—面向服务架构的最佳实战[M].韩宏志,译.北京:清华大学出版社,2006.

[5]庞引明.认清SOA的本来面目[N].计算机世界,2005-09-13.

[6]王金玲,朱诗生,符群卫.基于WebService的SOA软件部署的研究[J].现代电子技术,2007,(4).

[7][美]EricNewcomer,GregLomow.UnderstandingSOAwithWebServices中文版[M].徐涵,译.北京:电子工业出版社,2006.

[8]DeveloperWorks中国.SOAandWebService新手入门[EB/OL].http://www.128.ibm.wm/developerworks/

cn/webservices/newto/

index.html,2002.

相关主题
文本预览
相关文档 最新文档