【深度技术】一种基于Mule-Transport机制的防空指挥系统软件服务交互方法
今日荐文的作者为中国电子科技集团公司第二十八研究所专家赵晓莲,信息系统工程重点实验室专家王珩。本篇节选自论文《一种基于Mule-Transport机制的防空指挥系统软件服务交互方法》,发表于《中国电子科学研究院学报》第12卷第1期。
摘 要:面向服务的防空指挥系统软件开发与集成已成为防空指挥系统建设中的关键问题之一。针对高时效性和安全性条件下的软件服务交互问题,本文提出了一种基于Mule-Transport机制的防空指挥系统软件服务交互方法。该方法在基于开源Mule的服务运行环境基础上,利用Transport消息机制,以插件方式动态绑定军用传输协议,实现服务间交互。该方法采用Java语言实现,具有良好的可扩展性和移植性;服务交互试验表明该方法有效、可行,较好地满足了防空指挥系统环境时效性和安全性的要求。
关键词:服务交互;Transport消息机制;Mule;防空指挥系统;面向服务
概 述
在新军事变革的牵引和信息技术飞速发展的推动下,防空指挥系统逐步向网络中心化方向发展,防空指挥系统的软件功能也逐渐具备松散耦合、动态重组、灵活集成等特点。面向服务体系结构(Service-Oriented Architecture,SOA)和Web服务技术在民用领域的快速发展和成功应用为网络中心化条件下防空指挥系统软件能力提升带来了契机。美军已经将SOA和Web服务技术作为目前在研的许多重大项目的标准或技术体制,为其各类防空指挥系统向网络中心化转型提供基础支撑。
目前,实现SOA体系架构最为流行的就是Web服务技术。在标准的Web服务中,通过 HTTP传递SOAP(简单对象访问协议)的方式,以XML形式完成服务请求者和服务提供者之间的交互。因此,SOAP提供了一种简单的用于在分散或分布式环境中交换结构化和类型信息的机制,其实质是一个基于HTTP和XML的请求/响应RPC协议。然而,由于军用环境下防空指挥系统的高时效性、高安全性的要求,HTTP的XML效率问题和安全性缺陷使得直接采用HTTP+SOAP方式实现指挥信息系统软件服务间交互还无法满足要求,迫切需要结合防空指挥系统实际特点和应用环境,探索研究服务间交互机制,为未来防空指挥系统软件集成和服务化应用提供技术支撑。
本文以上述背景为出发点,在基于开源Mule的服务运行环境基础上,利用Mule的Transport消息传输机制,以插件方式动态绑定军用传输协议,实现了服务间的交互。仿真试验表明该方法可行,有效,既具有具有良好的可扩展性和移植性,还能满足军用环境下防空指挥系统软件服务间高时效、高安全交互的需要。
1 Mule-Transport机制的基本原理
Mule是由SymphonySoft公司在2003年发起的开源ESB(企业服务总线)项目。它是一个轻量级的消息框架,同时也是一个分布式的对象代理,能够无缝地使用不同的技术、传输和协议来处理与其他应用之间的交互。Mule围绕着ESB架构来设计,最终目标是提供与不同源地址的数据进行交互的统一方法,而不妨碍开发人员了解数据的发送、接收方式以及协议等细节。Mule的核心是Mule管理器(Mule Manager),它管理着这个模型的所有核心服务的配置以及它管理的组件,包括Mule模型(Mule Model)、传输管理(Mule Transport)和代理(Agents)等组成。
Mule-Transport用于在Mule框架中的不同应用之间传递消息,每个Transport都提供一组在某个特定的信道上传输消息的功能。例如:HTTP Transport处理通过HTTP协议发送的消息,而FILE Transport则负责从文件服务器上下载文件。Mule-Transport的工作原理如图1所示。Transport的核心是连接器(Connector),它维护Transport的配置和状态。当接收消息时,Connector使用消息接收器(Message Receiver)来读取数据,并将其打包成一个消息,传递到服务组件(Service Component)的Inbound路由器中。当发送消息时,Connector使用消息分配器(Message Dispatcher)来从服务组件的Outbound路由器中接收消息和路由指示,然后将消息发送到下一个服务组件或应用程序。
2 基于Mule-Transport机制的服务交互方法
2.1 基本思想
为了对商用标准规范的有效支持,同时满足指挥信息系统安全要求,本文在基于开源Mule的服务运行环境之上,遵循商用SOAP协议规范,基于Mule-Transport机制,绑定军用传输协议(本文称为Military Transport Protocol,MTP),实现MTP-Transport消息传输机制,进而实现“SOAP+MTP”的方式进行服务交互,基于Mule-Transport的服务交互方法的基本原理图如图2所示。
2.2 实现方法
整个实现分为两大步骤,首先是采用JNA(Java Native Access)技术,将目前的使用C语言开发的MTP军用传输协议进行封装改造,形成Mule能支持的Jar包形态;其次是利用Transport机制将MTP集成到Mule中,实现MTP-Transport消息传输机制,并实现对SOAP消息的传递。
2.2.1 基于JNA的MTP封装方法
基于本文的方法要实现SOAP绑定军用传输协议,需要将使用C语言开发的军用传输协议的接口代码封装改造为JAR包形态,为其他调用者暴露出Java接口。针对这一需求,本文采用JNA技术实现军用传输协议的封装。JNA是建立在JNI(Java Native Interface)技术基础之上的一个Java类库,它提供了一组Java工具类,用于在程序运行期间动态访问系统本地库,而不需要编写任何Native/JNI代码。由于JNA提供了一个动态的C语言编写的转发器,可以自动实现Java和C的数据类型映射,因此可以方便地使用Java直接访问动态链接库中的函数。
通过上述技术,将军用传输协议中的网络传输初始化、网络传输发送以及网络传输退出三个接口分别封装改造成相应的Java接口。
2.2.2 MTP-Transport实现方法
为了实现MTP-Transport,本文继承一组Transport的抽象类,实现一组Mule提供的接口,如表1所示。为了提高开发速度,本文使用Maven生成一个Transport模板。
表1 接口功能描述
MTP-Transport具体实现原理图如图3所示。
根据表1的接口和图3所示的实现原理,本文具体实现了如下六个Java文件,完成了基于MTP-Transport的交互。
(1)MTPConnector.java:MTP连接器,主要用于建立MTP的代理类,记录配置信息,得到消息接收器并对消息接收器进行初始化;
(2)MTPMessageReceiver.java:MTP消息接收器,主要用于接收消息,并将接收到的数据包装成事件;
(3)MTPMessageDispatcher.java:MTP消息分配器,主要用于发送消息;
(4)MTPMessageDispatcherFactory.java:用于管理消息分配器的生命期;
(5)MTPClient.java:MTP传输的辅助类,用户初始化、关闭连接、处理回调等具体操作;
(6)Transformers.java:转换器,用于进行数据格式之间的转换。由于MTP支持二进制报文的传输,因此需要进行字节流到二进制的格式转换。
2.3 技术特点分析
本文提出的服务交互方法的核心是以插件的形式实现了对传输协议的添加、删除与修改,这种方法还可以支持更多的传输协议。在使用时,应用无需关心底层传输协议的具体细节,实现了应用和传输协议的分离,是一种松耦合的绑定。此外,由于使用Java语言,使得提出的服务交互方法不限于某种特定的操作系统和平台,支持Mule、Axis等标准Web服务,充分兼容商用规范标准、支持跨平台,具有良好的可扩展性和移植性,同时也满足军用安全要求。
3 实验分析
为了验证方法的有效性和可行性,本文在广域网和局域网的混合环境下开展了服务交互试验。试验分为两个方面:(1)Mule环境性能测试,验证采用Mule-Transport机制的可行性;(2)MTP-Transport的时效性测试。
3.1 Mule环境性能测试
本文首先对基于Mule的自研开源服务运行环境(采用Mule机制)的性能进行测试。对Mule依赖的底层容器—Axis2和常用的.NET Web服务服务端运行环境IIS的调用效率进行了对比测试,通过传输数据的大小测试服务调用时间,从而验证基于开源Mule的服务运行环境的实用性和有效性。我们分别开发部署Axis2服务和.NET Web服务,再利用统一的KSoap客户端去访问,试验两种环境下服务调用时间。试验分为本机试验和局域网试验两种情况,试验结果如图4所示:
从上图中可以看出,当数据量比较小时,.Net服务和Axis2服务访问时间基本上相同,但当数据量比较大时,.NET服务访问时间大于Axis2服务访问的时间,说明Axis2服务容器效率高于.Net服务容器的效率。此外,在实验中测试.Net服务时当服务数据量达到4M时访问抛出异常,而测试Axis2服务时当服务数据量达到5M时访问才抛出异常,说明Axis2服务容器比.Net服务容器能够传输更大的数据量。因此基于开源Mule的服务运行环境进行服务调用的探索是可行的。
3.2 MTP-Transport方法时效性测试
为了简单起见,本文在实验中编写了字符串打印服务,测试通过MTP-Transport方法的服务调用时间,即从客户端发起服务请求、到服务端响应、再返回给客户端的整个时间。调用的字节数分别为100Byte、200Byte、300Byte、400Byte和1000Byte,在不同的调用字节数情况下,进行多次试验取平均值。
MTP-Transport方法时效性测试结果如图5所示:
从图中可以看出,随着调用字节数的不断增加,调用时间呈线性增长。由于增加了Transport处理,再加上Java语言解释性特点影响,从而增加了MTP-Transport方法的处理时延,但总体可以满足军事信息系统服务调用的要求。
结 语
随着面向服务体系架构在防空指挥系统中的广泛应用,防空指挥系统软件服务开发与集成已成为关键,如何实现高时效性和安全性条件下的软件服务交互已成为研究热点。针对上述问题,本文在基于开源Mule的服务运行环境基础上,提出了一种基于Mule-Transport机制的防空指挥系统软件服务交互方法,实现了以插件方式动态绑定军用传输协议从而完成服务间的交互功能。该方法具有良好的可扩展性和移植性,也能较好地满足防空指挥系统环境时效性和安全性的要求。从目前的试验来看,下一步的研究工作在于要对MTP-Transport机制进行优化和改进,从而进一步提高服务交互效率。
(参考文献略)
《 召 集 令 》
身怀学术绝技的你速速前来!
1,有学术水准:一定的专业学术水准是必须的!
2,有独到思想:具深度,广度,锐度者为最佳!
3,内容范畴:自然科学,社会科学等等不设限!
4,资讯或翻译类文章:符合上述条件的均可以。
学术plus咨询/投稿邮箱
xueshuplus@163.com
声明:版权归《中国电子科学研究院学报》所有。转载请务必注明出处,违者必究。文章观点不代表本机构立场。
《中国电子科学研究院学报》欢迎各位专家、学者赐稿!投稿链接
电话:010-68893411
邮箱:dkyxuebao@vip.126.com