基于SOA的企业信息化建设——ESB企业服务总线技术实现

时间:2022-11-16 21:40:07 浏览量:

摘要:文介绍了现代企业在信息化建设过程中遇到的交互和耦合问题,阐述了面向服务构建企业应用的解决方案——ESB企业服务总线,对该解决方案给出了详细的设计,并举出实现例子。

关键词:面向服务;企业解决方案;企业服务总线

中图分类号:TP391 文献标识码:B 文章编号:1009-3044(2007)06-11659-02

1 问题提出

企业信息化建设,大部分已经结束各自为政的各业务部门独立建设的阶段,迫切需要把企业内部已经建设、部署好的业务系统,联通起来,构建整体的企业信息化体系。

这里所说的联通,不是简单的通过互联网络,连接各个应用系统,而是各个系统间业务工作和业务数据的共享和交互。

目前,在各个业务系统建设均已成熟的情况下,企业内部提出这种系统交互需求,只能通过认为地为系统添加特定的接口,完成与特定系统的特定数据或者业务交互,这样不但造成系统间交互的网络模型混乱复杂,也加重了开发成本,随着新交互需求的不断提出,企业信息化建设始终处于不断修补的不良状况下。(图1)

图1企业信息化建设始终阶段不断修补的不良状况

随着企业中业务系统建设越来越多,这种错综复杂的系统交互关系会越来越多,各个系统甚至出现互相依赖,互相耦合的情况。这种情形直接导致了业务组件重复建设、业务数据冗余、企业内数据不同步、系统界限模糊、维护困难、拓展困难等等难以想象的问题,使得企业信息化建设陷入泥沼。

2 ESB企业服务总线

ESB(Enterprise Service Bus,即企业服务总线)是传统中间件技术与XML、Web服务等技术结合的产物。ESB提供了网络中最基本的连接中枢,是构筑企业神经系统的必要元素。

企业服务总线(Enterprise Service Bus,ESB)的概念是从面向服务体系架构(Service -Oriented Architecture, SOA)发展而来的。SOA描述了一种IT基础设施的应用集成模型,其中的软构件集是以一种定义清晰的层次化结构相互耦合,其中,一个ESB是一个预先组装的SOA实现,它包含了实现SOA分层目标所必需的基础功能部件。

ESB是传统中间件技术与XML、Web服务等技术相互结合的产物。ESB的出现改变了传统的软件架构,可以提供比传统中间件产品更为廉价的解决方案,同时它还可以消除不同应用之间的技术差异,让不同的应用服务器协调运作,实现了不同服务之间的通信与整合。从功能上看,ESB提供了事件驱动和文档导向的处理模式,以及分布式的运行管理机制,它支持基于内容的路由和过滤,具备了复杂数据的传输能力,并可以提供一系列的标准接口。

使用一个分布式企业服务总线,企业可以通过利用标准以提供灵活实时的“按需服务”基础架构来最大化利用其在硬件和软件的现有投资。

3 企业服务总线建设构想

3.1 期望业务模型

企业服务总线的模型,是为企业的业务流和数据流提供一个通用的通道,通过标准的接口,应用系统可以容易地通过ESB提供服务接口和数据交互接口。(图2)

图2应用系统通过ESB提供服务接口和数据交互接口

这里涉及几个关键:

(1)接口:各个系统,尤其是旧有系统,系统接口均已经发布部署,不容易改变,企业服务总线ESB必须兼容这些接口,这必然需要一套适配机制,满足不同的接口通过适配机制接入到总线中;

(2)总线中的数据流:为了方便ESB操作数据,从各个接口流入总线的数据流和业务流,必须被格式化成标准格式,在ESB中流转,当传送到特定系统时,再被翻译成该系统能接受的格式;

(3)节点的注册:接入ESB的应用服务,必须在ESB上注册组件信息和服务信息;

(4)自动传输:ESB应该可以控制一些无需人手干预的数据流转,如信息同步等,并且控制流动的过程。

3.2 实现原理

通过定义节点的方式,定义应用组件的接入以及接口规则;通过开发针对不同类型数据接口的适配器,实现不同的接口接入系统,并翻译节点数据的ESB内部数据格式;通过定义数据交互的路由和调度,实现自动的数据传递过程;通过队列、线程、缓存等方法,实现多任务多进程,提高业务数据传递效率。(图3)

图3 ESB服务实现原理

4 企业服务总线实现

4.1 适配器—总线标准接口的驱动程序

对于接入企业服务总线的应用系统和应用服务,有些是旧有系统,可能还是CS结构的系统,有些是新建设的系统,有的部署在互联网上,使用WebService方式对外沟通,有的部署在生产环境里,使用Socket的方式进行通讯。

为了把各种各样的业务系统接入到ESB的总线结构中来,我们需要一系列的接口程序,可以针对性地对各种类型的交互接口进行通信,并且担当系统与总线间的数据格式翻译工作。

我们把这样的软件组件,叫做适配器。就如不同的硬件设备连接到电脑主板总线上需要驱动程序才能工作一样,适配器就扮演了这样一个驱动接入系统或者组件的角色。适配器通常有两种,一种是针对特定接口的通用适配器,如SQL适配器、FTP适配器、WebService适配器、Socket适配器等。另外一种是针对特定系统的适配器,比如是使用某种特定加密算法的适配器。

企业服务总线的基础架构上,可能提供一些通用的适配器做常规连接,但是也会提供标准接口和开发规范,允许特殊的应用系统自己开发专用的适配器,接入到企业服务总线中来。

4.1.1 FTP适配器

FTP适配器的目的是通过让用户定义,适应FTP的取数据拿数据的过程,可以实现配置FTP拿数据,配置FTP传数据。

我们通过适配器,可以进行:

定义FTP信息——让用户定义FTP服务器、用户名、帐号、文件的定义规则等信息。

下载FTP的文件——从FTP服务器下载需要的文件。

打包FTP文件信息返回——把拿到的FTP文件信息打包返回。

上传FTP文件——把输入的信息打包成文件放到FTP服务器上。

4.1.2 SQL适配器

SQL适配器的目的是通过让用户定义SQL语句,可以实现从数据库取数据、传数据的过程,可以实现执行SQL语句、存储过程。我们通过适配器,可以进行:

定义SQL语句、存储过程——让用户定义数据库链接、SQL语句、存储过程、输入参数等信息。

传递执行参数——把输入的参数传递给SQL执行引擎。

返回SQL执行结果——把SQL执行的结果打包返回。

4.1.3 Web service适配器

Web service适配器的目的是通过让用户定义Web service服务,可以实现打包Web service的参数,调用Web service服务,可以实现Web service的参数、调用Web service服务。

我们通过适配器,可以进行:

定义Web Service服务——让用户定义Web Service的方法、参数等信息。

转换Web Service的输入参数——把节点的输入参数转换为Web Service的方法参数。

调用Web Service服务——调用Web Service服务,并输入Web Service服务对应的参数。

打包Web Service的返回结果——把Web service运行的结果打包返回。

4.1.4 接入适配器

一般情况下,应用程序需要使用ESB的服务时,通过直接调用ESB提供的通用Web service接口即可,但在某些情况下,应用程序需要通过其他方式调用服务,比如Socket等,因此有必要提供一个接入适配器来处理接入ESB的差异性。接入适配器目前考虑下面几种接入方式,可以根据情况进行增加:

Http接入适配器,应用程序通过调用Web service直接使用ESB提供的服务。

Socket接入适配器,如果接入的节点只能使用Socket通讯,则使用ESB提供的Socket接入适配器来调用ESB提供的服务。

条形码接入适配器,如果接入的节点只能使用条形码方式通讯,则使用ESB提供的条形码接入适配器来调用ESB提供的服务。

红外线接入适配器,如果接入的节点只能使用红外线通讯,则使用ESB提供的红外线接入适配器来调用ESB提供的服务。

蓝牙接入适配器,如果接入的节点只能使用蓝牙通讯,则使用ESB提供的蓝牙接入适配器来调用ESB提供的服务。

4.2 节点—插在接口上的业务应用

节点为应用系统,或者应用服务接入ESB服务总线的连接点,它通常代表了一种应用服务。

比如说,存在一个操作系统,它提供发送手机短信的服务,也提供发布企业公告的服务,那么它在ESB上应该定义两个节点。

节点一:短信发送节点,节点定义了服务的接口类型,如WebService接口,定义了使用通用适配器—WebService适配器,定义了数据传输的格式—一段满足系统规范的XML描述,还定义了一些诸如系统标识等等的关键信息。

节点二:公告发布节点,定义信息同短信发送节点。

如上所述,节点可以理解为一个接入的端口、一个接入的服务、一个完整的业务。节点的定义要满足一定的格式,有些必须定义的字段,这里会形成节点定义规范。

通常,应用系统获得一个在ESB上注册的节点,就可以向该节点发送请求。作为服务使用者,请求方需要从ESB上获得该节点的请求格式,通过ESB的通用调用接口,传入请求和目的地,ESB自动启用通用适配器,向节点传输请求,并返回结果。

当ESB中启用调度机制后,系统可以自动起请求,逐个按次序访问定义在调度序列中的节点,发送请求或者传递请求。(图4)

图4 ESB节点模型

4.3 节点集—可进行同一操作的应用集合

有时,服务使用者想把请求传递给一组节点,但不想多次调用。如,有一个消息需要同时通过短信息和企业公告进行发送,就可以把短信发送节点和公告发布节点组成一个节点集,服务使用者一次向节点集发送信息即可。

节点集中的节点处于并发的地位,请求将会同时传递给节点集中的所有节点。

若要按次序发送请求,或者把上个节点返回的数据作为下个节点的请求,就需要定义路由了。

4.4 系统—节点业务的所有者

为了控制ESB上节点的使用权限,或者便于维护节点的来源,需要定义节点所属的应用系统信息。

4.5 路由—数据传输或业务执行的路径和次序

有时我们希望我们的请求不是单步返回,而是希望它依次传递给一系列的节点,在某些地方,还需要把一个节点的输出作为下个节点的输入,更复杂的情况还包括在传递过程中根据返回的结果进行逻辑判断,决定请求下个传递目标。定义这样一个信息传递的过程和路径,我们称为路由。(图5)

路由管理是定义节点执行的先后次序,并可以定义嵌套路由,是指执行完本身的节点后,再执行嵌套路由,有下面的情形:(图6)

调用一个Web service的方法获取数据,然后调用SQL语句插入到数据库中从某个FTP的站点拿数据,然后调用SQL语句插入到数据库中从数据库中取出数据,然后把数据放到某个FTP的站点从某个Windows目录取数据,然后调用某个Web service。

4.6 调度—自动运作的一系列业务过程

有时候,有些数据交互不需要人为干预,它可能会在某天特定的时候自动运行,比如每天晚上10点,自动把人力系统上的最新用户信息发送给企业内所有的用户系统。

我们可以设计一个数据传递的路由,然后指定这个路由的请求数据来源和数据传递规则,最后定义该路由运行的时间规律,这种自动按照时间表运行路由的规则,就叫做调度。

图6 动作的执行流程

5 结束语

企业服务总线是企业解决方案的新设想,它能有效地沟通企业分散的信息系统资源,为企业提供一个低成本的全面解决方案。通过使用ESB,可以在几乎不更改代码的情况下,以一种无缝的非侵入方式使企业已有的系统具有全新的服务接口,并能够在部署环境中支持任何标准。该技术可以说是现代企业信息建设中的突破性新技术。

参考文献:

[1]孙正兴,戚鲁.电子政务原理与技术[M].人民邮电出版社,2003.

[2](美)伊尔,著,王满红,陈荣华,译.SOA概念、技术与设计[M].机械工业出版社,2007.

[3]梁爱虎.精通SOA:基于服务总线的Struts+EJB+Web Service整合应用开发[M] .电子工业出版社,2007.

[4]中科永联高级技术培训中心[S].企业服务总线.

[5]Matt Rothera. 企业门户集成和企业服务总线 ( ESB ) Hub Vandervoort[EB/OL].http://dev2dev.bea.com.cn

[6]张军.企业服务总线的实施策略与总线集成.developerWorks中国.

本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。

推荐访问:企业信息化建设 总线技术 服务 企业 SOA