随着企业信息化的深入与扩大,企业的需求从单一部门的应用上升到企业级的应用。由于企业的传统结构是按照职能来组织各个部门,各部门分别使用不同的系统来协助他们完成规定的职能,各个部门的IT系统的开发者基本都是采用各自熟悉的开发平台和设计语言,导致不同企业内部系统在平台上的异构。在此基础之上,众多关键的信息被封闭在相互独立的系统中,信息资源难以共享,对企业整体而言无法实现高效的、完整的业务流程,在企业内部形成一个个“信息孤岛”。如何解决这些问题,更加高效地利用企业内部各系统资源,成为当前许多企业迫切需要解决的问题。
为了解决资源难以共享和“信息孤岛”等问题,提高信息化程度,本文利用SOA架构和Web Service技术对企业内部系统进行改造和集成,在不修改企业内部各子系统(包括企业的遗留系统)原有架构的基础上,局部改变各子系统,实现跨地域跨平台的企业信息资源系统的无缝连接,更加高效地利用企业信息资源。
1利用SOA解决信息孤岛问题的研究
1.1传统企业应用集成方案的不足
传统的企业集成解决方案是利用CORBA、COM+、J2EE等技术来构建企业分布式计算系统以达到目的。尽管这些技术给互联网发展作出了很大贡献,但是它们有一些不足:
(1)数据编码格式互不兼容。CORBA使用CDR(通用数据格式),DCOM使用NDR(网络数据表示),不同的数据格式使它们之间的通信变得很复杂。
(2)通信协议不同。CORBA使用的是IIOP,DCOM使用的是DCE.RPC,EJB使用的是RM!,这些协议要求系统客户端与服务器端紧密的耦合,即要求同一类的基本结构。
(3)CORBA、DCOM、J2EE都是基于动态端口分配点到点的远程方法调用机制。大部分企业都在它们共用WEB服务器和因特网之间放置防火墙,关闭了除WEB服务端口之外的其他端口。所以它们之间难以穿越防火墙。
(4)发现机制的跨平台性不好。CORBA、J2EE使用命名服务与交易服务的发现机制,只能实现部分的跨平台性;DCOM使用注册表,只能应用于Windows平台,没有跨平台性可言。
1.2利用SoA整合资源的优势和现状
面向服务的体系架构SOA的本质是一切围绕业务对象或业务模型。至于“服务”,只是这些业务模型暴露出来的形式,因为以统一的服务形式暴露出来,更便于不同供应商和客户之间的信息交互。使用SOA架构和Web Service技术来解决企业应用集成问题具有以下优点:
(1)简单性:Web Service具有统一的编码格式。便于设计、开发、维护和使用。
(2)开放标准:Web Service是基于开放的一套标准如SOAP、WSDL、UDDI、HTTP等的。
(3)灵活性:基于Web Service的集成是非常灵活的,
因为它是使用UDDI,建立在发布服务的应用程序和使用服务的应用程序之间的松散耦合,而且Web Service可以穿越防火墙。
(4)跨平台性:不管Web Service用什么语言实现,在什么平台下运行,只需要知道Web Service的WSDL即可调用Web Service。因此,基于SOA和Web Service技术的企业资源的集成得到了许多研究机构和企业的重视,并取得了一定的应用。如国有银行实现国有银行核心业务数据集中管理,支持银行业务创新及服务质量和管理能力的提高B3;对于电信行业,提出了基于SOA的事件驱动电信企业应用集成的体系结构;在医学上面有建立医疗数据一致共享的虚拟数据库,使医疗信息系统能够进行统一的信息交互的医院信息系统的集成。
SOA为解决异构资源的统一访问提供了很好的构架,但基于SOA思想解决不同资源的相互访问和资源共享,尤其是遗留系统的信息访问,还有许多技术问题需要解决。主要包括:
(1)数据异构性:许多遗留系统有内部私有数据,它们为满足所属系统需求而定义,设计时没有考虑日后与其它数据源间的交换和互操作,这些数据只能被自己对应的系统解释和处理。
(2)平台异构性:遗留系统用不同语言开发,如:C/C++、JSP、ASP和PHP技术等,导致遗留系统对操作系统和安装的软件环境等的依赖,造成了遗留系统在平台上的异构性。
(3)通信协议异构性:CORBA、EJB、DCOM、WEB系统等使用不同的通信协议,造成了各遗留系统在通信协议上的异构。针对以上问题,本文提出了一个利用SOA架构和Web Service技术对企业内部系统进行局部改造,整合跨地域、跨平台的企业内部异构系统,更加高效地利用企业资源的解决方案。
2资源整合的不同层次
针对企业内部为数众多的异构的Web系统、桌面系统,解决各系统之间信息使用度不高的问题,实现企业系统应用层面上的集成,关键在于如何处理和使用各系统的信息。由于异构系统的多样性,遗留系统存在的数据异构、平台异构和通信协议异构等几个问题,资源整合和应用需要不同层次的处理,我们将其分成以下五层:
(1)资源层由于企业内部各系统采用不同开发语言和不同开发平台开发,造成信息资源的数据格式的不同,为了统一各业务及信息资源的数据格式,将各种异构信息及业务包装成Web Service,将不同的数据格式统一成XML文件形式,实现了数据格式的统一;资源层包括用各种技术实现的Web信息系统和桌面系统,这屿系统提供相关信息及业务,是Web Service所实现功能的主要来源,也是本平台所有业务功能的资源来源,作为包装层的支撑。
(2)包装层为了解决企业内部各系统通信协议的不同,采用Web Service技术标准的SOAP协议进行通信;为了动态调用时能穿越防火墙,平台采用可以穿越防火墙的Web Service技术;为了实现各子系统的平台无关性,采用了基于SOAP协议通讯的,只需要知道WSDL即可调用的Web Service技术,在一定程度上也解决了平台异构性的问题。所以设计了使用WebService技术实现的包装层。
(3)服务管理层经过包装层的包装后,各信息资源和业务包装成了众多的Web Service之后,需要对Web Service进行统一管理,所以设计了服务管理层。服务管理层引入UDDI规范,UDDI规范是用于创建注册表服务的规范,该注册表服务可以对包装层的Web Service进行分类,它提供了一套标准数据结构,它对提供Web Service和访问这些Web Service的技术要求方面建立了统一的模型。表现层可以搜索UDDI注册表来得到合适的Web Service,用户在UDDI注册表中注册包装层包装好的Web Service,在资源整合的实现过程中采用了JUDDI。
(4)数据管理层包括各种连接在计算机上的、具有相同或不同数据模型的数据库。为了实现对众多数据库的管理,实现了一个异构数据库集成中间件,此中间件是一个逻辑上完整而又具有站点自治性,物理上包括企业内部各异构数据库系统。也在一定程度上解决了数据异构性。以较小的代价,使各种异构数据库之间实现数据的互访及共享,并对用户实现数据的透明访问。通过基于XML与JAVA的异构数据集成中间件的设计具有跨平台、跨语言和跨领域的特性,在数据层面实现了平台无关性。
(5)表现层根据企业使用者的需求,划分各部门的业务.对服务管理层UDDI中的服务进行调用和使用,完成相关业务功能,以Web的方式展现出来。表现层相当于Web服务中的服务请求者。表现层是对整个异构资源的整合和集成,提供一个展现平台。
因此,资源整合的体系结构,可如图1所示。
图1资源整合的体系结构
此体系结构的资源层、包装层、服务管理层和数据管理层是对遗留系统的包装处理,在这几层完成对Web Service的管理及业务和数据的处理过程。我们把这部分称为服务模块;表现层是调用并且使用服务模块的服务,以某种方式展现出来,我们把这部分称为请求模块。一旦服务模块的服务(即底层各系统的业务内容和业务逻辑)改变,由于使用了Web Service统一的接口,请求模块和服务模块可以不需要改变或者只需要做很小的变动(对输入输出参数个数或者类型的改动),即可正常运行。
3关键技术的实现
资源整合的体系结构中核心是服务模块,由于主要是用Web Service技术实现,所以服务模块各层中,包装层是最为关键的一层。包装层的基础是资源层,在资源层中包括很多基于不同语言和不同平台开发的系统,如何把这些异构系统的资源以某种标准的方式包装,并对外发布成统一的服务以及表现层如何统一调度和使用这些包装后的服务,成为本系统研究的关键,通过对资源层各系统的分类,我们把遗留系统分为Web系统和桌面系统,包装层将分别对他们进行包装。
3.1 Web系统的包装
通过对资源层各Web系统的分析,包括ASP、PHP和JSP等技术开发的系统,对这些系统进行归类,以是否基于MVC模式(即表现层、业务层和控制层分离的开发模式)开发为标准。
在包装过程中主要利用业务层内容,我们把底层资源系统分为两类:可直接Web Service化的资源和不可直接Web Service化的资源。可直接Web Service化的资源主要包括基于MVC模式的ASP.NET和J2EE平台下的系统;其他Web系统归为不可直接Web Service化的资源。
研究过程中采用Axis开发Web Service。在Axis下开发Web Service的过程是先需要写一个服务实现类,然后可以通过jws方式或wsdd方式发布并部署Web Service。对于可直接WebService化的资源中的J2EE平台下的信息系统的包装,把除了表现层JSP页面之外的整个工程打包成一个JAR包,如新建工程rise,打包成fise.jar。将工程rise用到的所有jar包和fise.jar全部拷贝到tomcat的lib下,同时找到包含需要发布成WebService的方法的类文件如:NewsManage,在server-config.wsdd文件中加入需要发布的信息,主要是NewsManage编译后的文件,如图2所示。可把NewsManage里面的相关方法发布成WebService。
图2 wsdd中添加部分
对于用ASP.NET下开发的系统,在已有系统的Web应用程序里面新建一个Web Service,并在Web Service中写要发布为服务的函数,在函数前面加上[WebMethod]可以把此函数发布为一个Web Service。此为ASP.NET开发的系统在包装层的包装方法。到此即把可Web Service化的资源发布成为WebService。
对于不可直接Web Service化的资源系统,由于所有Web信息资源都是以http协议进行通信并以html文件作为其内容结构组织的,因此本平台采用模拟http消息传递和解析html文件的方式实现与不可Web服务化网站资源的通信,通过对Java程序的编译并把其发布为Web Service。包装不可直接WebService化的资源系统的具体流程如图3所示。
图3不可直接Web Service化资源的包装
3.2桌面系统的包装
企业内部同样存在很多以C/S系统为主的桌面系统,开发桌面系统的主要技术有.NET平台下相关技术、J2EE平台下相关技术和Delphi技术等。目前桌面系统包含的大多数应用软件系统都是C/S形式的两层结构,主要是由客户应用程序和数据库服务器程序组成,二者可分别称为前台程序与后台程序。在暂时没考虑前后台程序在特定的应用中需要特定软件支持的桌面系统这一情况下,我们可以用以下方式把一般桌面系统包装成Web Service。把.NET平台下开发的桌面系统包装成WebService的方法与在.NET平台下包装可直接Web Service化的Web资源的包装方法类似,新建一个Web Service的工程,导入整个桌面系统前台程序和后台程序的DLL文件并且在.NET里面引用,新写业务方法接口并在需要发布成为Web Service的方法前面加上[WebMethod],把此方法发布成Web Service,即可以把桌面系统的相关方法包装成Web Service。
把J2EE平台下开发的桌面系统包装成Web Service的方法与在J2EE平台下包装可直接Web Service化的Web资源的包装方法类似,导入桌面系统的整个前后台系统打包之后的JAR包,新建一个实现类,并且利用JAR包导入相关实现方法,编译包含此方法的类,同时修改WSDD文件可把相关业务发布成Web Service。
通过对Web系统和桌面系统的包装,我们把资源层的大多数Web信息系统和桌面系统的业务内容包装成了Web Service。
3.3 Web Service的部署
在资源整合体系结构和资源层的资源系统被包装成WebService的基础之上,在J2EE平台下利用MVC开发模式实现了一个资源整合系统。本系统实现过程是使用BEA、IBM和Apache等公司大力支持的Axis开发Web Service。Axis开发WebService,首先需要写一个服务类,然后可以通过jWS或wsdd方式发布并部署web Service。
目前部署Web Service的方式主要包括:即时部署和定制部署。即时部署是使用jWS文件的方式编写Web服务,具有方便、快捷的优点,它可以很快地将已有的类文件发布成Web服务,但是这种做法引发的问题是我们必须要将已有类的源码发布出来,另外并不是类中的所有方法都想发布成呵通过Web服务来访问,这时候需要将这些方法的修饰符改为非public。而定制部署,又称为service方式,发布一个service方式的Web服务需要两部分内容:编译后的类文件以及Web服务发布描述文件,不像jWS方式需要类文件的源代码。所以我们摒弃了以jWS发布方式,采用了更加灵活的、动态的、只需要源代码编译之后的class文件即可发布的wsdd方式部署Web Service。
4异构资源的整合实例
在研究关键技术的基础上和在项目应用背景之下,在农业领域选择了一些农业异构系统,这些系统和企业异构系统在技术实现上类似,同时都包括了各种技术实现的Web系统和桌面系统,对文中所提出的异构资源整合技术进行验证。选定课题组中新建的二个农业专家系统、七个国内知名农业信息系统和专家系统作为平台的资源层,严格按照本文所提出的资源整合的体系结构,在关键技术研究中所述的包装技术之上,把资源层的资源包装成Web Service并发布,通过表现层对服务的调用,初步实现了一个对用户提供业务信息的实时查询、图片的展示及更新、病虫害的判断及交互处理和兽药管理等功能的信息协同服务平台,此平台屏蔽了所有资源系统,并且把各个资源系统所提供的功能以统一的方式展现出来。图4所示为水稻种植的主页面。
图4水稻种植主页面
5 结论
本文提出了在企业内部整合异构系统、解决资源难以共享和使用效率不高等问题的一种思路,提出了一个资源整合的体系结构。通过对企业遗留系统的分析,主要研究如何把遗留系统包装成Web Service及包装之后服务的部署和管理,初步实现了一个信息协同服务平台,验证了这种思路的可行性。在一定程度上解决了企业内部各个资源系统之间资源难以共享,使用效率不高等问题。
CIO之家 www.ciozj.com 公众号:imciow