基于SOA架构的企业集成系统设计与实现
 

2009-11-27 作者:吕鸣剑,孟东升 来源:网络

 

O 引 言

信息化的发展,企业间协同商务和企业信息门户(EIP)等要求企业的应用系统是一个高度集成和开放的系统。然而大型企业往往拥有着异构系统,导致系统间信息的交互与互操作非常困难,形成了一个个“信息孤岛”,为了实现企业全局的业务过程自动化,人们投入了大量的人力和财力来进行系统集成。传统的企业应用集成(Enterprise Application Integration,EAI)解决方案有4种类型:用户界面集成、数据集成、业务流程集成、函数/方法集成,这4种集成方法不能方便、灵活、低代价地实现异构系统的集成,难以快速适应企业现代业务变化的需求。另外,随着企业计算的发展,企业级应用要求新的软件系统不再是从底层做起,而只是依据企业逻辑需求重新组织己有的数据存储,将现有的数据和事务通过新的渠道,如浏览器或者手持设备呈现给用户。基于面向服务架构(Service Oriented Archi-tecture,SOA)的应用集成开发方案,在不改变企业应用底层架构的基础上,可以很好地解决上述问题。它支持在中间层以服务模块方式实现解决方案,当多个运行在不同平台和技术下的应用程序必须互相通信时,这种体系结构尤其适用。

l SOA架构

SOA架构是一种分布式的软件组件模型。整个系统被设计和实现为一组相互交互的服务,它使得系统中的某些服务能够充分利用其他的服务同时却无需考虑其物理位置。在该模型中,任何的业务功能被作为提供的一个服务使用。应用程序的不同功能(服务)通过这些服务之间定义良好的接口和契约联系起来,使得构建在系统中的服务可以以一种统一和通用的方法进行调用。这种具有中立的接口定义(没有强制绑定到特定的实现上)的特征称为服务之间的松藕合。松藕合系统的好处有两点:它的灵活性;当组成整个应用程序的每个服务的内部结构和实现逐渐地发生改变时,它能够继续存在。这就为解决EAI集成问题和快速开发新的IT系统铺平了道路。SOA模型如图1所示,说明了SOA中的不同角色及其工作流程。SOA架构的组件包括:

(1)服务提供者:服务提供者是一个可通过网络寻址的实体,它接受和执行来自使用者的请求;

(2)服务使用者:服务使用者是一组使用服务提供者所提供的一项或多项服务的组件;

(3)服务储备库:服务储备库包含服务的描述,服务提供者在该储备库中注册其服务,而服务使用者访问该储备库已发现的所提供的服务。

2 SOA的具体实现

SOA是一种软件架构,而不是局限于某个技术的组合,它超越了技术范围。SOA的关键是“服务”。W3C将服务定义为:“服务提供者完成一组工作,为服务使用者交付所需的最终结果。最终结果通常是使用者的状态发生变化,但也可能是提供者的状态改变,或者双方都产生变化”。服务是网络中可用的软件资源。服务提供者通过标准机制提供服务,使用者通过网络有计划地使用服务。服务储备库发布服务所在位置,并在使用者请求服务时定位服务。服务使用者和提供者的角色不是惟一的,服务提供者也可以是使用者,反之亦然。SOA具体的实现有很多,包括Web Service,Ses-sionBean,JINI等,但随着Web Service技术被越来越重视,其己经成为构建SOA的主要技术。

3 基于Web Service实现SOA

3.1 Web Service体系结构

Web Service是近几年提出的一种新的面向服务的体系结构,它是基于Web服务提供者、服务请求者和服务注册代理的不同操作来建立的。具体来说其运作分为三部分:发布操作一服务提供者通过发布操作向服务注册代理注册自己的功能和访问接口;查找操作一服务请求者通过查找操作向服务注册代理查找特定的服务;绑定操作一服务请求者通过绑定操作实际使用服务提供者所提供的服务。

3.2 Web Service技术支持

Web Service技术建立的面向服务架构基于开放性标准。一些典型的开放性标准有:XML(可扩展标记语言);SOAP(简单对象访问协议);WSDL(Web服务描述语言);UDDI(Web服务注册规范)。Web Serv-ice本身就是一种SOA架构,可以实现各种应用程序资源的互联互通,大大促进了软件源的共享,从而成为新型的提供分布式的(全球性的)信息整合手段和应用系统EAI解决方案。

3.3 Web Service结构的构造实现

(1)基于CORBA和Java的Web体系结构

基于CORBA和Java的Web结构的运行机制是:CORBA客户方程序从Web服务器下载执行,并与应用服务器上的CORBA应用对象通过Internet对象请求代理间协议(Internet Inter-ORB Protocol,IIOP)通信,调用其指定的操作。CORBA应用对象首先对客户的请求进行认证和解释,根据客户请求的内容,或直接访问资源层的数据库或与网络上的其他CORBA对象交互,共同完成客户请求。各种新开发的Web应用,只要使用接口定义语言(IDL)封装成CORBA对象,在CORBA系统中登记注册后,就可以动态地加载进入Web系统,迅速地为客户提供服务。体系结构如图2所示。

(2)基于微软ActiveX的Web体系结构

基于ActiveX的Web结构的运行机制是:浏览器下载ActiveX控件、脚本或文档并在本地运行,它们可以作为分布式组件对象模型(Distributed ComponentObiect Model,DCOM)客户,利用DCOM的对象远程过程调用(Object Remote Procedure Call,ORPC)机制访问应用服务器中的DCOM对象;也可通过服务器上的Internet服务应用程序接口(ISAPI)等接口访问后端数据库。因此,在基于ActiveX的Web体系中,客户端与应用服务器之间采用ORPC进行通信,而应用服务器与数据库之间是采用ISAPI进行通信,整个Web体系中的核心技术是COM/DCOM技术。

(3)基于SUN公司的Java RMI的Web体系结构基于Java RMI的Web结构的运行机制是:客户方程序是一个Java Applet或JavaBeans对象,通过RMI内部通信机制(Jaya RMI是SUN公司用Java语言建立的分布对象环境)调用应用服务器上的Java对象,继而以JDBC等方式访问数据库。因为Java RMI是用纯Java环境实现的,Java语言本身的可移植性使得RMI具有很强的跨平台性。此外,在处理纯Java对象之间的通信时,RMI具有较高的效率。

3.4 三种Web系统体系结构的比较

基于CORBA、微软ActiveX和SUN Java RMI的Web体系结构的主要差别比较如表1所示。

4 基于SOA架构的系统开发与集成

传统的EAI解决方案是私有的和复杂的,因而不能实现必要的灵活性和适应性。Web Service为实现EAI提供了一种全新的机制,它为本地和远程服务的定义、发布和访问提供了一整套开发标准的方法。它能彻底地改变传统EAI中点对点的集成方式。

本应用实例是某生产彩电企业信息系统。将其销售系统分解为描述彩电信息、订单服务、购买服务三个功能,分别包装成Web服务发布到网上,用户查到这些Web服务后,就可以直接调用他们。该实例实现了Web服务的创建、部署和客户对Web服务的调用。销售系统Web服务和客户端实现是基于Java的J2 SD-K1.4.1-01开发环境,以TomcatServer 4.1作为Web服务器,Web服务是利用JAX-RPC技术来创建,生成相应的WSDL文档并部署在Tomcat上,客户端利用JAX-RPC提供的xrpcc工具生成Web服务的存根,以Servlet通过存根调用Web服务的方法。

彩电信息Web服务refrilnforService的实现如下:

(1)首先定义接口tvlnformation和接口实现类tvlnforlmpl,实现接口的方法getRefrilnfor。

(2)用JAX-RPC提供的xrpcc工具根据配置文件tvforServiceConfig.xml生成tvforService.wsdl文档和服务器配置文件refnInforServiceConfjg.proper.ties。命令为:xrpcc-classpath refriappServer-d refriappServer-server-keep tvlnforServiceConfig.-Xml。

(3)用deploytool工具将彩电信息Web服务部署在Tomcat上。

以客户端调用tvlnforServiceWeb服务来说明如何用Web服务。

①根据配置文件tvInforCIienfConfig.xml,用xrpCc工具从WSDL文档的描述生成tvlnforServiceWeb服务的客户端类(tvlnfor-Stub存根和支撑类)。命令为:xrpcc-dtviappClient-client-keeptvlnforConfig.xml。

②在findTvServlet中通过JAX-RPC调用服务实现类tvforService-Im pl的方法getTvlnfor。

③在findBook.html中调用findTvServlet,取得彩电信息。

其他彩电生产系统,人事管理系统等应用的实现部署情况与此类似。各种企业应用不管是遗留系统还是外部企业系统,无论处于不同平台,使用不同对象技术的CORBA,DCOM,EJB,以及不同的编程语言,只要能以Web服务进行封装,将其统一在一个Web Service技术层面上,就能像插件一样嵌人消息服务总线,实现松耦合SOA架构,从而实现了敏捷的企业应用集成EAI及企业信息系统的可扩展功能。

5 结 语

传统EAI技术点对点的集成方式不能灵活、低代价地实现异构系统的集成,难以适应企业快速的业务变化需求。SOA架构提供了一种松耦合的服务模式,大大降低了应用系统的集成和维护难度。Web Service技术,能够去除原来处在不同平台,使用不同对象技术的CORBA,DCOM,EJB构架的实现差异,将其统一在一个Web Service技术层面上,这也使得它成为现阶段构建基于SOA架构集成系统的重要手段。然而Web Service技术现在尚未成熟,应该进一步针对面向服务的SOA体系架构的其他实现技术如Session Bean,JINI等,进行研究和探索,比较其各自的优势和适用范围,在企业EAI实践中,能够根据原有信息系统的实际情况,灵活选用不同的SOA技术手段,高效率地实现企业信息集成。

火龙果软件/UML软件工程组织致力于提高您的软件工程实践能力,我们不断地吸取业界的宝贵经验,向您提供经过数百家企业验证的有效的工程技术实践经验,同时关注最新的理论进展,帮助您“领跑您所在行业的软件世界”。

资源网站: UML软件工程组织