基于XML的消息交换平台设计
2007-08-20
作者:曾锟 刘东波
摘要:为了改进传统数据交换" title="数据交换">数据交换平台缺乏通用性和扩展性的问题,本文采用可扩展" title="可扩展">可扩展标记语言(XML)和中间件技术,在对跨平台、多数据源的消息转换问题进行了抽象,在此基础上,提出了基于XML的数据交换平台的组件化" title="组件化">组件化模型。该模型的设计充分运用了XML、中间件以及组件化技术,使得数据交换平台具有更好的通用性和扩展性。
关键词:XML XSLT 中间件组件化
1.引言
可扩展标记语言(XML)是当前数据交换领域的研究热点。作为W3C组织提出的标准,它为数据交换提供了一系列技术和方案。
在XML出现之前,系统间如果需要进行数据交换,不可避免地需要根据多个交换/描述标准提供数据接口,而且还要为潜在的交换/描述标准预留接口。另外,随着系统的进化、自动化程度的提高,数据的一次转换流程将不局限于一个交换/描述标准,在很多情况下需要涉及两个或多个交换/描述标准。若为每两个存储格式分别开发转换应用,是一项复杂度呈指数增长的工作。
本文针对上述问题,提出了利用XML技术构建消息中间件平台" title="中间件平台">中间件平台的数据交换方法,将上层应用与底层基本操作分开。运用该平台,各种数据交换只需考虑高层应用开发,而不需要关心底层的细节问题,从而可以节约时间和成本,而且提高了系统的安全性。
2.XML与数据交换
在数据交换领域中,如果没有标准的交换技术和方法,相同的数据分析处理模块在很多应用中都要重复开发,而完成的工作可能只是将某一数据源的数据转换到不同的目标数据库中。由于没有中间标准,各系统的开发人员几乎没有可能将代码重用,昂贵的数据交换代价使得数据源只能散乱孤立地存在,形成一个个数据“孤岛”。在XML出现之前,在绝大多数应用领域里都是如此。可以看出,数据交换的核心问题是信息的标准化,主要解决信息的可理解问题,重点是机器对信息的识别,并能对数据进行自动处理。
XML文档本身并不描述数据的显示方式,而只是表示数据本身。数据按照树状表示,不仅可以用于显示,而且可以为其他应用程序充当数据源。只要在数据交换中各个参与方采用统一的XML标记和格式来生成XML文档,不同的应用系统就可以正确地识别和解析文档中的数据,实现数据的动态共享。XML文档本身就是由很多个节点组成的树形结构,这种结构既有利于信息查询,也便于使用面向对象语言来编程。
综上所述,XML作为一种数据描述的元语言标准,从出现以后,就不断地被应用到各种不同的数据交换领域中。利用XML制定应用领域的交换标准,使得各个应用领域中都形成了优化的数据交换模式:星型交换模式(见图2-1)。
图2-1星型数据交换模式
3. 消息中间件模型设计
当我们面临多种不同数据格式,信息交换变得比较困难的时候,可以利用XML技术建立如图3-1所示的消息交换模型。
图3-1基于消息中间件的数据交换平台模型
消息中间件平台和“适配器”是模型中的两个关键模块,下面分别介绍这两个部分。
3.1适配器
“适配器”的主要作用是将来自各业务系统的、不同格式的消息转换为相适应的XML文档,以及XML文档之间的转化,当然它也实现了诸如消息收发之类的接口。
“适配器”模型如图3-2所示。在这个分层模型中,最低层的“与业务系统的接口”完成格式化消息的接收,在中间层完成消息与XML文档的转换,在最上层将转换后的XML格式化消息发送到消息中间件平台。在实际应用中,可以设计通用的“适配器”,但必须为不同的业务系统设计不同XML文档转换" title="文档转换">文档转换配置文件。
图3-2“适配器”模型
3.2消息中间件平台
消息中间件平台可以看成信息传输的“桥梁”,主要负责数据的传输,但是它无需了解具体业务系统的任何细节,只需实现与通用“适配器”之间的接口。这种设计可以使整个消息中间件系统实现构件化,使得整个系统稳定性、可靠性好,扩展性更强,且易于升级和维护。
4.基于XML技术的格式化消息转换的具体实现
格式化消息转换技术是消息中间件设计中的核心部分,也是“适配器”的主要工作。格式化消息转换过程如图4-1所示。
消息类型A |
消息类型B |
图4-1 格式化消息转换的过程
例如,现在业务系统A要将本系统所使用的A格式的消息(通过消息中间件平台)发送给业务系统B,并转换成业务系统B中所使用的消息格式B。根据图4-1描述的转换过程,首先由业务系统A中的“适配器”将类型A的消息转换成本消息格式对应的XML格式化文档并交给消息中间平台进行发送。业务系统B的“适配器”收到XML文档后,首先对XML文档进行解析,根据源消息的相关信息,选择相匹配的XSLT格式转换模板,将收到的XML文档转换成消息类型B所对应的XML文档。最后,“适配器”将转换后的XML文档转换成本系统所使用的消息类型B格式的消息并发送给业务系统B,从而完成本次转换。
本转换过程主要包括三次基本转换,消息类型A→源XML文档、源XML文档→结果XML文档以及结果XML文档→消息类型B。第一次与第三次实际上是同一类型的转换,即特定格式消息与XML统一格式消息之间的转换。
但是为什么不直接将源XML文档转换成消息类型B呢?因为这样做,势必要为不同的业务系统设计不同的“适配器”,这将使得系统变得难以维护、升级,极大的增加了工作量。而上述的这种三次转换的设计,充分地利用了组件化设计的优势,“适配器”不需要随着业务系统的不同而改变某些接口和内部算法。“适配器”一旦设计好,可以在任何业务系统中使用而不用做任何修改,用户只需维护本系统内部使用的消息格式的XML文档性质的消息结构描述,系统只需维护关于使用中消息的XSLT转换模板即可,简单方便。
目前,W3C组织有专门的机构来来维护各种语言、各种环境下XML的ToolKit,比如:expat、libxml、xerces等,不管是C/C++程序员还是Java程序员都可以方便的引用相应的dll、lib进行开发,具体开发过程由于篇幅限制,就不再赘述。
5.结束语
本文提出了基于XML的消息交换平台,该平台具有如下特点:
1)采用XML规范,确立了数据交换的标准,使平台具有较好地通用性;
2)采用组件化设计思想,平台模型结构清晰,易于开发和维护;
3)与设计语言无关,开发人员在该模型的基础上,可以选择不同的开发语言和工具进行程序设计。
6. 参考文献
[1] 康威,战术数据链间格式化消息转化研究,2005。
[2] 章明,许青松,沈锡臣 基于XML的数据交换共享平台模型,2003。
[3] 柴晓路 XML数据环境下基于关系模式的数据交换方法,2001。
[4] 金可仲 ,陈庆章 XML数据交换的安全解决方案,2003。