美章网 资料文库 企业服务的协议转换研习范文

企业服务的协议转换研习范文

本站小编为你精心准备了企业服务的协议转换研习参考范文,愿这些范文能点燃您思维的火花,激发您的写作灵感。欢迎深入阅读并收藏。

企业服务的协议转换研习

系统概述

1系统概述

企业服务总线的核心是由消息监听器、适配器、协议转换器、消息路由器和服务调度器五部分组成.协议转换作为企业服务总线的核心功能之一,可以为注册到企业服务总线上的服务提供者和服务请求者提供可靠的交互服务.ESB系统总体框架图如图1所示.企业服务总线的主要功能包括如下部分:1.消息监听功能:监听基于不同协议的消息.2.服务请求者与服务提供者之间的应用协议的转换:如果服务请求消息基于的协议与服务提供者所注册的协议不同或者服务提供者所提供的服务消息是服务请求者无法解析,则需要对该协议进行转换.3.服务之间的消息转发(路由):把请求消息转发到目标的服务地址.4.服务定位:查找服务的目标地址.5.服务安全:对请求消息进行认证授权.在企业服务总线中,协议转换器主要功能就是如果请求消息基于的协议与服务者所采用的协议不同,则需要对该协议进行转换.

2协议转换器的需求分析

各个系统在需要与其他系统交互的时候,要通过调用ESB来访问目标系统提供的服务接口获取数据,完成业务操作.各应用系统作为服务消费方在调用ESB的时候,需要明确每个参数代表的含义,按照参数书写格式要求来发送参数,然后ESB会自动调用消费方服务.但连接到ESB上的服务请求者和服务提供者可能采用不同的应用协议,针对不同的应用协议,ESB的监听器接收到的请求消息有不同的协议格式.如果ESB能够支持现有的各种通信协议,那么对消息的处理就完全不考虑传输细节,而直接通过消息请求和获取服务.如果没有将一种协议转换为另一种协议的工具,则服务请求者很难与给定的服务提供者进行通信.与此需求相关的需求是使用者的数据格式可能与服务提供者使用的数据格式不同.因此,需要一种能够提供此转换的工具.

关键技术

1基本定义

SOAP即简单对象访问协议,是一个轻量级的、简单的、基于XML进行信息交换的通信协议.它可以和现存的许多因特网协议进行结合使用,包括HTTP,SMTP.JMS是实现JAVA领域远程通信的一种手段和方法,是个远程通信协议,在其他的语言体系中也存在着类似JMS的东西,可以统一的将这类机制称为消息机制.XML(ExtensibleMarkupLanguage)即可扩展标记语言,它是万维网协会的XML工作小组所定义的可扩展标记语言,是一组规则与准则的集合.XML作为通用的、自解释的数据交换格式,已成为大多数应用程序所采用,XML技术可以有效地解决不同协议下的数据之间的共享与交互.

XML现在已经成为一种通用的数据交换格式,它的平台无关性,语言无关性,系统无关性,给数据集成与交互带来了极大的方便.XML是从标准通用标记语言(SGML)中简化修改出来的.XML将SGML的灵活性和强大功能与已经被广泛采用的HTML结合起来,简化了计算机对文档和数据交换的处理,使得现有的协议和软件更为协调,从而简化了数据的处理和传输.使用XML标记语言可以做到数据或数据结构在任何编程语言环境下的共享.XML最大的优势在于它能对各种编程语言编写的数据进行管理,使得在任何平台下都能通过解析器来读取XML数据.XML标记语言的语法非常简单,可以通过解析器在任何机器上解读.并可以在各种计算机平台上使用.逐渐成为一种数据交换的语言.

2协议转换思想

ESB支持广泛使用的协议(HTTP,JMS,SOAP等等).目前,我们设计的ESB系统支持的协议有:HTTP、SOAP和JMS协议,以后还将对其进行扩展.协议转换模型用于当服务的请求者与服务提供者基于不同协议时的消息转换.消息监听部分监听到消息后,对其进行适配,然后将其传递给协议转换部分,协议转换器主要负责将采用不同协议的消息转换成内部标准消息,经由消息路由器路由后将其封装成目标方要求的协议形式的消息传递到目标方.在进行协议转换时,标准消息的内容主要由以下几部分组成:用户名、角色类型、IP地址、端口号、消息的状态、消息的寻址信息和业务数据.

网络上传输的消息的内容常常分为消息头和消息体,如应用层的HTTP、SOAP、JMS消息.业务相关内容存入消息体中,消息头中包含与业务无关的管理信息,比如消息的优先级、序列号、地址信息等.因此,对消息进行解析时,可以对其消息头和消息体分别进行解析.譬如SOAP消息都使用XML形式编码.处理接收到的SOAP消息应该有两个步骤,首先,识别应用程序需要的SOAP消息的头部分;其次,识别应用程序需要的SOAP消息体部分;最后,检验该SOAP消息是否满足要求,即消息的目的地址、参数信息等是否和目标地址名称、参数等相对应.

协议转换模型设计与实现

1并行XML解析

XML在不同的语言里解析方式通常都是一样的.基本的解析方式有两种:SAX和DOM.利用SAX解析XML文档,牵涉到两个部分:解析器和事件处理器.解析器负责读取XML文档,并向事件处理器发生事件,如元素开始和元素结束事件;而事件处理器则负责对事件做出响应,对传递的XML数据进行处理.DOM是基于XML文档树结构的解析,DOM在分析XML文档时,将组成XML文档的各个部分映射为一个对象,在内存中,这些节点形成一棵文档树,整棵树是一个节点,树中的每一个节点也是一棵树,通过访问树中的节点来存取XML文档的内容.为了提高系统的效率,在这个协议解析器中,我们将采用一种并行的XML解析方式.并行XML解析可以充分利用多核计算机的优势来提高系统的性能.具体实现方式为:首先对XML文件进行预解析,根据预解析的结果将XML文件划分为多个小的XML文件,并将这些XML文件分配到不同的线程上,从而这些划分后的XML文件就可以并行地进行解析.

2协议转换模型

在不同系统或不同系统的组成部分之间传输数据时,必须考虑接口参数差异问题.不同格式的数据是难以在系统内部或者系统间传输的,因此协议转换器要解决这种异构的问题.鉴于业务相关内容通常存入消息体中,消息头中包含与业务无关的管理信息,协议转换器以分层方式进行转换,主要包括2个部分:消息头转换和消息体的转换.在进行协议转换时,要对ESB系统支持的各个协议建立模型,每当需要某种协议解析时,都要读取对应的协议模型信息.协议转换可能会出现解析失败的情况,这就要求将失败信息记录到日志文件中,方便系统查阅并进行处理.

为进行协议转换,消息或服务必须要先进行适配,在初次连接或者其协议发生变化时,要填写其协议的格式,在此设计一个表格存储在注册库中.这一表格包括字段序号(SQ),消息名称,消息序号,消息类型,字段名称,起始位,长度,字段类型,字段描述.其中,消息类型是指消息所使用的协议.协议转换示意图如图2所示。协议转换器要把收到的不同协议格式的消息转换为内部统一的消息格式即XML的格式,以方便内部消息路由器对消息的路由;消息路由器对消息路由后,由系统内向服务提供方或者服务请求方发送数据时,协议转换器实现读取XML文件,按照数据库中对应的注册的协议的要求,形成指定的消息类型,并发送到目的地.而这里的转换是需要服务请求方和服务提供方提前注册他们支持的协议的详细信息,我们将这些信息分别都保存在不同的表格里,并存入注册库.

因此,协议转换器有两个功能要实现.一个是将接收到的消息转换为内部数据格式即XML文件.另一个功能是将内部表示的XML文件转换为注册库中查找到的目标协议格式,在这一过程中,需要使用并行XML解析方式对XML文件进行解析,从而能够快速地实现协议转换.在这个转换的过程中,ESB系统首先要建立所支持的JMS、HTTP和SOAP协议的模型,从而为协议转换提供相关的信息.协议转换器过程图如图3所示,在这里以JMS和SOAP协议转换为例.若获取到对方的JMS或者SOAP消息,则在存入数据库的同时,要首先根据之前注册的JMS或者SOAP模型将JMS或者SOAP消息转换为XML的格式,统一消息格式,方便系统对数据的处理.当传输数据时,若传输的是其他形式的消息,则其消息格式 为消息描述指定的格式,协议转换器就利用消息描述表中对消息的内容的描述进行转换,将XML格式的消息转换为JMS或者SOAP消息.实质上,在协议转换器中,消息的转换包括两个层次上的协议转换:服务请求方的数据到系统内部的协议转换,系统内部的消息到服务提供方的协议转换;服务提供方的消息到系统内部的协议转换,以及系统内部的消息到服务提供方的协议转换.

3协议转换器的可扩展性

设计模式使人们可以更加简单方便地复用成功的设计和体系结构.为了实现协议转换器的可扩展性,协议转换器的实现中应用了工厂模式和适配器模式.协议转换器的类图如图4所示:在协议转换器的实现中,AbstractTransformer是所有协议转换的一个基类,并且是一个抽象类,实现了接口Transformer和Amnotatedobject.其它的转换类都实现了AbstractTransformer.

结语

企业服务总线可以有效地解决国家水体污染控制与治理科技重大专项中独立的、异构的、封闭的系统的集成问题.协议转换器为企业服务总线集成两个或者多个需要互相通信应用程序提供了方便快捷的方式.协议转换器主要负责将不同协议的消息转换成内部标准的XML消息,并将内部标准的XML消息转换为消息描述表指定的某种协议的消息.协议转换器使得ESB支持集成现有系统而无论其底层采用何种技术,如JMS、SOAP、HTTP以及其他技术.通过协议转换,方便地实现了不同协议应用之间的互联互通,降低了因为频繁修改现有系统的通信协议而带来的稳定性风险.协议转换器是ESB系统中的重要部件,设计一个良好的协议转换器对ESB系统来说是非常重要的一步.基于XML开发的协议解析器具有技术标准统一性及跨平台的优点.XML相关技术在不断地发展,这就为将XML用于ESB系统中提供了方便和可能.总之,本文通过对现有协议的分析,提供了一种比较通用的协议转换方法.协议转换器要适应应用协议的不断发展,使系统能够以最小的成本进行扩展.因此通过使用设计模式的多种模式实现了协议转换器的可扩展性.

作者:王芳芳 廉东本高天单位:中国科学院研究生院中国科学院沈阳计算技术研究所