。
0 引言
冶金自动化系统本质上是异构分布式的系统,见图1 。不同的子系统可能采用不同的编程语言,可能运行在不同的操作系统和机器架构上,并且可能使用多种网络技术进行通信。要把这些子系统集成在一起成为完整高效的冶金自动化系统,在冶金自动化应用上是一个很棘手的问题。我们实现一个基于适配器模式和元数据驱动的通信中间件(XCM )来逻辑上一致地解决这个问题,并成功地应用于太钢新热轧的板坯库、加热炉和钢卷库等系统的通信。

1 适配器模式
设计模式(Design pattern )是一套被反复使用的、众所周知的、经过分类整理的、设计经验的总结。使用设计模式是为了可重用设计,让设计更容易被他人理解,保证设计可靠性。“四人帮”( GoF )的《 设计模式》[1] 一书是第1 次将设计模式提升到理论高度,并将之规范化,该书提出了23 种基本设计模式,适配器模式就是其中一种,从此,在可复用面向对象软件的发展过程中,新的大量的设计模式不断出现。
适配器模式是将一个系统的接口转换成另一个系统所期望的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个系统能够在一起工作的设计思想。见图2 。

2 通信中间件(XCM )中的适配器模式
我们把适配器模式的设计思想应用于冶金自动化系统的通信系统,实现了一个基于适配器模式的通信中间件(XCM ) ,见图3 。由于运行在不同的操作系统与机器架构上的子系统可能支持有不同的应用层通信协议,不同的应用层通信协议之间是不能通信的,因此,我们利用了一个应用层通信协议间的适配器来实现不同应用层通信协议之间的通信,目前XCM 已实现了SOCKET,MSMQ,ORB,SOL和OPC等应用层通信协议的适配。支持以上应用层通信协议的应用系统通过简单配置即可实现通信。按照此设计思想可以很容易地将XCM 扩展到支持更多的应用层通信协议,同时兼容较早版本的XCM ,因此,从兼容应用层通信协议的维度来看,XCM 具有很好的可扩展性。

3 通信中间件(XCM )中的元数据驱动
元数据是描述数据的数据。实现通信必须指定必要的通信参数,如协议、端口,路由、状态控制方式等,同时还要定义每条通信电文的格式(元数据),我们使用XML 语言来定义这些通信所需参数和元数据,见图4 。XCM 启动时将解析这个XML 配置文件,根据通信参数配置各通信端和各通信端间的路由表,当发送应用发送电文到达XCM 接收通信端时,XCM 将根据元数据来解析电文并转换为XCM 发送通信端的电文格式,并将转换后的电文按路由表路由到XCM 发送通信端,接收应用从XCM 发送通信端接收到电文。
根据具体的应用场景,将通信文档中电文的定义转换成XCM 规定的格式XML ,并指定具体应用场景的通信参数,无须写一行代码,启动XCM 即可实现不同应用系统间的通信。由于XCM 是基于元数据驱动的,当通信电文需调整时,只需修改配置文件中相应的电文元数据定义,无须写一行代码,重启XCM 即可。因此,将电文的定义(电文元数据)用相对中性的XML 语言定义,电文定义与通信实现的松藕合方式使XCM 具有很好的可扩展性。

4 通信中间件( XCM )的实现技术
中间软件是指基于计算机硬件和操作系统之上,支持应用软件开发和运行的系统软件,它为分布式应用提供了一个标准的计算平台。我们在跨平台的开源通用中间件ACE/TAO[2]基础上开发了面向冶金自动化系统领域的中间件平台,其中包括通信中间件(XCM )、数据存取中间件(XSM )、进程管理中间件(XPM )等。
通信中间件(XCM )用C++ 实现的,分析XML 配置文件采用DOM 协议,XCM 的日志功能使用了ACE 平台提供的日志基础设施,XCM 在系统中的位置见图5 。

5 应用案例
我们在太钢新热轧加热炉L2 系统与L3系统、加热炉L2系统与轧线L2 系统、钢卷库L1 系统与L3 系统以及板坯库L1 系统与L3 系统之间的通信成功地应用了XCM ,取得了很好的效果,见图6 。

6 结论
实现基于适配器模式的和元数据驱动的通信中间件(XCM )逻辑上一致地解决了异构分布式系统间的通信集成间题,同时还具有很好的可扩展性。
实践表明应用该通信中间件可大大地减少集成成本和提高生产效率。
参考文献:
[1] Erich Gamma,Richard Helm, Ralph Johnson. et al. 设计模式——可复用面向对象软件基础[M].北京:机械工业出版社,2002.
[2] Douglas C Schmidt, Stephen D Huston. C++网络编程卷1[M].北京:清华大学出版社,2003 .




