引言
随着企业信息化的发展,企业对异构系统之间数据整合要求越来越高,传统的整合方案,已日益不能满足其复杂的需求。为了提升异构系统间数据交互与信息共享功能,提出一种SOA—ESB企业整合架构。传统点对点的整合技术,通过互连异构系统接口进行通信,但随着业务系统的增加,其接口数目的不断增长,整个系统维护变得越来越困难:在随后出现的CORBA、DCOM、MOM等中间件整合技术,能够对系统进行无缝集成,但由于其要求服务客户端与系统提供的服务本身之间必须进行紧耦合,导致了整合系统的整体性能下降。面向服务架构(service-orientedarchitecture,SOA)使异构系统之间保持一种实时、一致的、松耦合的集成,在统一的技术规范下开发标准的服务,根据需求将异构业务封装为服务,发布到企业服务总线上(entERPrise servicebus,ESB),ESB根据业务流程的定义,对服务进行综合管理,保证服务在总线上安全的进行交互通信,从而保证了数据交互的高效性。本文提出的SOAESB企业整合架构降低了系统间的耦合度,提高了系统的高重用性,为各类企业的业务整合奠定了实现基础。
1 SOA-ESB企业整合架构的原理及优势
1.1 SOA-ESB企业整合架构的原理
SOA是一种策略、框架,为企业的数据整合提供一种思想。针对异构系统中的不同单元封装为服务,通过定义统一的接口和契约将这些服务联系起来,使得异构系统中的服务可以以一种统一的方式进行交互,并降低系统间的耦合度啪。在此平台下,通过ESB对服务进行集中管理、整合,对外提供统一开放接口,方便了其整合已有服务功能以及可为新增业务提供良好的通信接口。因此将ESB和SOA结合可有效解决企业业务数据整合问题.SOA.ESB企业整合架构能根据业务需求将定义好的服务发布到总线上,总线融合了WebServices和XML等技术,定义了数据交互的标准协议和统一数据规范,使新增服务或已有服务以其标准桥接到总线上,进而保证服务之间通信的一致性嘞。ESB将相互通信的服务转换为统一交互格式,根据定义的业务流程,配置路由机制分析服务的SOAP消息,提取目的地址,为服务请求者找到匹配的服务提供者,完成服务的相互操作,实现异构系统通信的目的。
1.2 SOA-ESB企业整合架构的优势
SOA.ESB企业整合架构从整体设计上满足SOA一切为服务的理念,它与其他ESB架构相比具有如下优势:
(1)ESB扩展性。真正体现SOA价值,服务在总线上处于平等地位,应用组件能以服务形式根据标准的接口部署在总线上,相比以前Hub形式的整合架构,此架构更灵活,更易扩展。
(2)路由更灵活。普遍的ESB只支持静态的路由,通过一个静态配置文件来确定路由,但由于业务的多样化发展,路由路径并不是一对一,多个服务可能同时满足服务请求者的接口定义要求。基于内容的路由,服务的请求者可以根据功能总列表中所有提供者的功能信息选择满足要求的服务者,使得请求者的选择更加灵活。
(3)安全性。为请求者设置用户权限,从消息的发出至消息的接收通过安全属性以及加密机制来确保消息的准确性和完整性。
(4)ESB中间件的高可移植性。在SOA.ESB企业整合架构中ESB总线支持标准的接口和规范的通信,使其与系统无关。本文总线层的设计除了满足电力系统要求外,还可以移植到其他行业适合的系统逻辑,以便提高系统的开发效率。
2 SOA-ESB企业整合架构的研究及关键技术
SOA-ESB企业整合架构的设计原则:
(1)架构化。它是软件平台开发和管理的基础;
(2)技术标准化。可增强框架的通用性;
(3)开放性、扩展性。使不同业务标准的应用系统快速的“插入”总线。
2.1 SOA-ESB企业整合架构
SOA-ESB企业整合架构共包含三层:服务实现层,ESB总线层,业务流程层。其核心是总线层的传输适配转换模块、路由模块以及安全模块,如图1所示。
(1)服务实现层:为ESB提供服务,通过WebServices技术,将不同大小的应用组件封装成粗细粒度不等的Web服务嘲,对服务进行WSDL描述,将WSDL描述文档注册到服务注册中心,以统一的标准暴露接口,便于遗留系统的重用:
(2)ESB总线层:对服务进行控制和管理的中心。由传输适配转换模块、路由模块、注册中心以及安全管理模块组成,通过ESB总线保证发布和调用服务的规范化,基于内容的路由使请求信息能得到快速的响应:
(3)业务流程层:定义基于业务标准的流程,流程定义了某些应用需要的服务总和,向ESB发出订阅/请求信号等。
2.2 SOA.ESB企业整合架构的核心模块
为使不同异构应用组件能相互服务,选择服务协议和消息格式作为融合交叉点,配合基于内容的路由机制以及可靠的安全机制,使服务互相操作的主要支点得以实现。
2.2.1传输适配转换模块
该模块由消息协议转换和数据格式转换两个子模块组成。
(1)协议转换模块。由于异构源所采用的底层协议不同,它们之间要进行消息的交互、信息的共享,必须使用转换机制将其转换为任意一方认可的协议,才能访问相应的Web服务。一次协议的转换需经过请求目标转换和目标应答转换两个步骤。请求目标转换是将请求调用服务的协议转换成被调用的Web服务的协议,目标应答转换是将被调用的服务发布的方式转换为请求调用服务的协议方式。这两个过程是互逆的,原理相同。每个转换过程都经过源协议分析器/生成器、目标协议分析器/生成器、节点映射器、内容映射器、编码转换器组成。
以请求调用服务转换为例。首先将调用协议通过源协议分析器,分析WSDL配置文件,读取配置文件中的配置项来初始化节点映射器以及内容映射器。初始完后,将源请求消息转换为目标协议的请求消息,产生相应的应答消息。转换的具体执行步骤如图2所示。
(2)数据格式转换模块。鉴于XML的结构化、自描述性、可扩展性等特征,在总线上选取XML作为数据交换格式,并使用XMLSchemall.0标准。数据的转换通常有XML到XML、XML到数据库、XML到操作系统等类型,本模块实现XML与XML之间的转换。转换首先为ESB中数据信息建立公共的接口,即ESB上标准的XML规范,作为各应用进行数据格式转换的标准;其次,建立各异构数据源XML到总线上XML之间的映射,包括文档格式、类型、时间日期等映射。使用XSLT样式表建立规范与映射,实现总线上XML之间的转换,消除了添加、删除等信息后,重新编译和部署代码的麻烦。
图1 SOA-ESB企业整合架构
图2传输协议转换
2.2.2路由模块
传统的路由机制使用的是点对点的通信方式,在其请求消息头文件中指定网络地址,以致限制了路由的灵活性。基于内容的路由,根据消息内容动态的选择相应服务提供者,提高了路由的灵活性。因此,本文选择基于内容的路由。
基于内容的路由分为两种情况处理:①服务无变更。各服务组件首先通过XML文档将功能存放到功能总列表,作为找到相应服务的基础,系统运行时,路由表根据消息的内容查询功能总列表,明确服务提供者并且获取其地址信息存入到该表中,进而找到路由的目的地:②当服务发生变更时,相应的服务功能会发生变化,影响到功能总列表中的功能信息。如果直接修改功能总列表,对于整个路由的维护将变的困难,在不影响其他非变更的服务正常路由的情况下,重新建立一个队列,从此队列中将服务变更内容刷新到功能总列表,保证服务的可用性,供路由表进行查询,找到最匹配的服务消息传递路径。
2.2.3安全模块
系统从服务消息的发送端到接收端进行安全检测。发送端,为消息设置一系列的安全属性,如发送者、接收者、身份认证、时间戳、到期时间等,利用XML加密技术以及签名技术对消息进行加密和签名,其中服务公钥基础设施PKI中密钥的注册码遵循XKMS规范;接收端,收到消息后检查安全属性,看是否匹配,消息接收时间是否过期,再通过XML解密技术对加密的消息进行解密,对于密钥管理同样遵循XKMS规范。另外对发送请求消息的用户进行权限的验证,使保证接入ESB的消息服务是合法的、完整的。
SOA-ESB企业整合架构的应用电力企业的信息管理系统发展较快,业务整合是必然的趋势,要求整合的数据既能安全又能高效的进行交互。电力企业的物资管理、设备管理、财务管理等是SOA.ESB的原型系统,现已广泛的应用于中小型电力企业。基于SOA.ESB企业整合架构的电力企业信息管理系统采用J2EE应用服务器Gomnimo,在Eclipse平台下进行开发,选择JAVA作为开发语言,总线上服务之间的调用使用简单对象访问协议SOAP、XML作为规范标准,通过传输适配、内容路由等关键技术,从体系结构的层次来低耦合企业应用系统,从而为企业业务整合提供有力的支持。
基于SOA-ESB企业整合架构的电力企业信息管理系统结构如图3所示。
图3基于SOA.ESB企业整合架构的电力企业信息管理系统结构
首先电力企业根据各自业务需求将各系统内部进行细粒度划分,或根据整合业务进行服务组合,如可将物资管理的订购和储备封装成Web服务,通过编写XML文档将订购和储备的功能存储到功能总列表,同时将各Web服务的WSDL描述文档(接口信息等)发布到注册中心。当物资采购发出请求时,ESB根据消息内容找到相应传输适配进行协议和格式的转换,并进行消息的安全检查,其次路由表即可根据请求内容查询功能总列表,获取符合条件的服务信息,从而完成正确的路由。以下将阐述核心部分实现。
3.1非规范XML到规范XML
创建XSLT样式表,行为的所有规则存储于XML文档中。通过样式表的模板规则元素来确定XSLT如何转换文档中满足规范的节点。在模板规则中,创建一个顶级元素用于指定哪些节点包含规则,在match特性中使用恰当的XPath表达式,可以把匹配XPath表达式的每个节点作为环境节点来访问。为获取被转文档中的XML元素,可以使用<value,>的select特性,特性中包含另一个XPath表达式,其值就是所选节点。输出时,由于XSLT默认输出是HTML格式,需把样式表的XML文档中<output>元素的method属性设置为xml。创建样式表后,即可通过编码实现文档转换。
平台采用Java语言开发,XSLT包含在JAXP(Java API forXML processing)API中,选用JAXP来实现。其转换部分代码如下:
首先创建Transformer对象,把XSLT样式表加载到Transformer中,然后把源XML加载到StreamSource对象中进行转换。为了实现输出XML的中文支持,设置输出的编码格式为GB2312。创建一个File对象,把转换结果写到磁盘。Transformer执行XSLT处理,得到最终符合平台规范的XML。
3.2内容路由
以财务管理系统向物资管理系统发出请求服务为例。首先初始化功能总列表,将服务提供者物资管理的所有功能用XML进行描述,存储到功能总列表中,其中service为提供服务的名称,add为服务地址,content为功能名称,number为功能标记号:路由用route:--<business,service>表示,其中business为业务流程名称,service为服务的相关信息。在初始情况下,路由中服务add为空。初始完功能总列表后,路由根据消息的内容查询功能总列表,确定服务提供者信息,检索出服务的add信息并覆盖到路由表服务信息中,如图4所示。
根据消息的内容来确定路由的目的地,改变了传统的一对一的静态模式,使整个服务的操作变的更加灵活。
3.3安全处理
在发出的SOAP请求消息中,进行消息的数字签名和加密。构造一个签字元素security,再构造元素中的引用元素,指向要签字的对象,如安全属性元素等,再将与消息安全有关的XML信息放入security的子元素deal中,依据XML数据签名规范分别对签字元素进行规范化,计算出摘要值和签字值:构造加密数据元素,设置相应的加密算法、加密对象引用等,根据XML加密规范对加密对象进行加密,加密后的值放入加密密钥元素,再将其作为SOAP头中security的子元素。以下是进行安全处理部分的代码:
进行签名时,得到封装SOAP消息的信封,获得用户验证信息并且产生签名对象,用此签名对象对消息进行签名,从被签名的信封中产生新的SOAP消息;同理,首先获得加密前的SOAP信封。然后获得用户验证信息并且产生加密对象,对获得的SOAP信息加密,根据加密后的消息产生新的SOAP消息。从消息的发送至接收进行安全检测,使服务的请求者和Web应用能安全可靠的进行通信。
图4 功能总列表与路由
4 结束语
本文在遵循企业整合架构设计原则上,提出了一种轻量级的SOA-ESB企业整合架构,重点分析了架构中ESB总线层的传输实拍、内容路由、消息安全等关键技术,实现了整合系统数据交互的统一性、灵活性、可靠性等特点。经时间证明,采用该整合架构的系统,能够松散耦合得把异构系统连接到ESB总线上,提高其系统的重用性和数据交互的能力,为企业的发展带来更高的效益,同时也为系统开发人员带来便利。
转载请注明出处:拓步ERP资讯网http://www.toberp.com/
本文标题:基于SOA的轻量级企业整合架构设计与应用
本文网址:http://www.toberp.com/html/consultation/1083938131.html