刘 平,魏文军
(兰州交通大学光电技术与智能控制教育部重点实验室,兰州730070)
随着网络技术与通信技术的迅速发展,使远程故障诊断系统实现成为可能。它突破了传统故障诊断模式的束缚,通过信息交流而不是人员交流来解决现场的故障问题,实现资源共享,避免重复开发。将计算机科学、通信技术、虚拟现实技术与故障诊断技术相结合,使设备的故障诊断更加灵活方便。
与此同时,随着Web技术的迅速发展,B/S模式在很多领域被采用,在远程状态监测与诊断领域应用相当广泛。
本文以基于B/S模式的远程故障诊断系统为例,对ActiveX技术进行了详细研究,并采用ActiveX技术和B/S模式结合的方式,来更好的实现远程故障诊断的功能。
B/S模式,即Browser/Server(浏览器/服务器)模式,它以Web为中心,采用了TCP/IP技术,以HTTP为传输协议,客户端通过浏览器访问Web以及与Web相连的后台数据库。其拓展了传统C/S结构,为用户提供了一个跨平台的应用环境:实现了开发环境和应用环境的分离;避免了为多种不同的操作系统开发同一应用软件的重复操作;便于系统扩展、维护及管理。
基于B/S模式的应用系统,由分布在Internet/Intranet上的浏览器、Web服务器和数据库服务器组成。如图1是一个典型的3层结构的B/S应用系统,其中连接在网络中的客户端通过浏览器向Web服务器提交请求,Web服务器根据客户请求与数据库服务器交互,并将操作结果返回客户端浏览器。其中,Web服务器负责处理应用业务逻辑,是3层结构的核心,实现了客户端与服务器的连接。
图1 B/S应用系统结构图
ActiveX是Microsoft提出的,采用COM(Component Object Model,部件对象模型)使软件部件在网络环境中进行交互的一组技术集。它是在COM之上建立的一种理论和概念,与具体的编程语言无关,包括ActiveX控件、ActiveX文档和ActiveX部件,本文主要对ActiveX控件的应用进行研究。
ActiveX控件是直接插入到应用程序的软件模块,它是为了适应Internet环境而对OLE控件作的扩充,其主要的作用是为其它程序提供具体特定的功能组件、减少重复开发工作。ActiveX控件同其它的ActiveX组件相比具有以下特点:能通过设置属性控制其行为,从而实现用户接口;在客户端的浏览器执行,能够缓解服务器的负载。
采用VC++6.0开发ActiveX控件主要有两种方法:MFC ActiveX Control Wizard和ATL(ActiveX Template Library)。使用MFC可以不必理会控件接口的细节,把注意力集中在控件本身的功能上,但是生成的控件比较大;使用ATL由于不涉及MFC的标准类库,生成的控件相对较小。当设计自己的控件时,MFC支持更容易满足人们的要求。
使用MFC开发的ActiveX控件包括Cole-Control类、事件引发函数和调度映射几个基本组件,ActiveX控件使用这些程序元素与控制容器和用户进行有效的交互。MFC创建的ActiveX控件都会从MFC基类ColeControl继承一组强大的功能,ColeControl提供给控件许多与MFC窗口对象相同的功能,并提供引发事件的能力。ActiveX控件从ColeControl类继承一套事件引发函数,在满足一定条件时,向控制容器发送或引发事件。调度映射用于向控件容器或控件用户公开控件的方法和属性,控件容器或控件用户可以通过属性操作控件,如更改控件的外观、某些参数或生成控件请求等。
ActiveX控件的开发主要包括界面设计,控件的属性、方法和事件设计。ActiveX控件设计完成后,必须注册后才能使用,可以采用下面的两种方法注册:
(1)将ActiveX控件的文件*.Ocx放入Windows/system目录下;
(2)采用VC++6.0中的Tools菜单的Register Control选项进行注册。
为了更好的完善B/S模式,克服其缺陷,本文在B/S体系结构的基础上,提出了一种基于ActiveX技术的B/S体系结构,将ActiveX技术应用于系统的客户端,开发出一种高效、安全的Web应用系统。ActiveX技术在B/S模式中的应用如图2。
图2 基于ActiveX技术的B/S体系结构
采用这种结构的优点:
(1)充分发挥了B/S体系结构的优势,保持了瘦客户端的优点。既充分考虑了用户的利益,使得浏览查询更加方便快捷,又使得系统的更新维护更加简单灵活;
(2)将服务器端划分为Web服务器和应用服务器两部分,有利于提高服务器的工作效率和安全性;
(3)通过在浏览器中嵌入ActiveX控件来实现在浏览器中实现起来比较困难的功能,比如通过浏览器进行报表的应答或在客户端绘制出逼真的画面等。另外,ActiveX控件在客户端的加盟,将更有利于客户端与服务器端之间信息的交互。
远程故障诊断系统一般是大型企业的关键设备,其内部一般已有一套比较完整的局域网络,这套局域网络对设备进行在线监测和一般故障诊断。以铁路设备远程故障诊断系统为例,在其内部已经有功能齐全的信号微机监测系统,可以实时地监测和诊断一般的设备故障,但对于较复杂的故障,需求助于专家的解答,而专家一般并不在现场,所以就得开发远程故障诊断系统,来更好的排除故障和保障安全。本文就以铁路设备远程故障诊断系统为例,来说明ActiveX技术在B/S模式中的具体应用。
如图3,铁路设备远程故障诊断系统的结构为:
(1)在监测现场采用Intranet结构,进行现场设备的监测和维护;
(2)当有故障产生时,用户使用浏览器通过Internet向远程Web服务器传输有关故障征兆和数据并请求故障解决方案;
(3)远程Web服务器收到请求以后,启动远程诊断专家系统进行诊断推理,并同时访问数据库服务器进行相应的处理,并产生诊断结果;
(4)Web服务器将诊断结果组织成HTML页面,通过HTTP下载到用户浏览器,对于一些实现起来比较困难的功能或一些需要丰富的HTML页面,通过在页面中嵌入ActiveX控件来实现,此时用户就可以得到诊断结果并进行相应的处理。
图3 铁路设备远程故障诊断系统结构
采用图3的系统结构,可以有效地实现异地远程多用户诊断服务,便于系统管理与升级,可简便地构造出一个异地远程人机会诊与协作诊断环境,这样就可以及时、准确的解决现场故障,更加有利于提高铁路的运行效率和保证行车安全。
作为针对Internet应用开发的技术,ActiveX控件嵌入HTML文本中,形成一定功能的程序模块,被广泛应用于Web服务器和客户端。以Active-X技术在客户端的应用为例,在ActiveX控件中,运用socket网络通信技术实现客户端与服务器之间的通信,用户可在不安装客户端程序的情况下直接通过浏览器与服务器或其他客户端进行通信。ActiveX控件可直接嵌入Web页面,来实现其特定的功能,其在Web页面中通过
本系统客户端中许多报表的打印如电码化实时测试报表、轨道电路实时值和故障诊断结果信息打印等需要特殊的格式,这一点浏览器所提供的打印功能无法实现,因此可采用ActiveX技术,实现在Web环境下的本地端打印和报表生成。具体实现过程为:
(1)Web服务器在接到用户故障请求后调用应用服务器中的相应组件,启动诊断服务器,并通过组件访问数据库,对诊断信息处理生成诊断数据,以文件形式存储于Web服务器中相应目录下;
(2)Web服务器向用户浏览器发送内嵌ActiveX控件的HTML页面,并在HTML页面里指明数据文件的URL地址;
(3)HTML页面根据所提供的ActiveX标志从Web服务器上下载ActiveX控件到本地端,并在浏览器里执行,同时将数据文件从Web服务器下载到本地端;
(4)对数据文件进行解析,并输入到相应的存储显示模块里,用以存储显示;
(5)当用户需要打印时,ActiveX调用打印模块进行打印输出,供用户参考。
在系统开发的过程中,把控件压缩成CAB文件可以节省下载时间,提高工作效率。当Web页上OBJECT元素的CODEBASE特性引用包含.INF文件的.CAB文件时,浏览器将自动把.CAB文件作为软件分发单位下载并安装,每次访问时还会自动检测版本并进行更新。
当Web服务器提供更高版本的ActiveX控件时,浏览器会自动下载新的控件,并自动安装,覆盖原来的控件。在后继开发过程中,如果需要对CAB包中的某一个文件进行升级,首先在服务器端完成升级,然后在客户端下载CAB包,检查本地对应的系统文件,如果源文件已经更新则自动下载更新该文件,而不需要更新整个CAB包中的所有文件,所以更新和维护工作更加简化方便。
当通过Internet发行软件时,软件的安全性是一个非常引人注意的问题,IE浏览器通过以下的方式来保证ActiveX插件的安全。ActiveX使用了两个补充性的策略:安全级别和数字签名,来进一步保证软件的安全性。在Internet上,当用户浏览到带ActiveX组件的网页时,IE浏览器在自动下载和提示用户安装之前,必须经过用户的同意及确认。
设计的ActiveX控件或插件是自行开发的,其状态通常是未标记为安全或是未经签名验证的。由于IE浏览器的默认安全设置是禁止下载、运行未签名的ActiveX控件和插件,因此客户机必须在IE浏览器的安全设置页面中将“ActiveX控件和插件”下的相关选项设置由“禁用”改为“启用”后,才能正常地进行应用。启用下载、运行未经签名验证的ActiveX控件和插件后,为了防止一些未经签名验证的插件会趁虚而入,影响系统的安全性或造成应用异常中止,可以采取控制访问方式,分区域设置IE的安全选项,只加载来自服务器站点的ActiveX控件,这样我们就可以放心的使用我们自己设计的ActiveX控件了。
本文通过分析B/S体系结构,利用ActiveX技术的优势,将这种技术应用于铁路设备远程故障诊断系统的客户端,不仅弥补了B/S模式的不足,而且更有利于实现远程故障诊断的功能,且对于实现业务逻辑封装、提高软件的可重用性和可维护性、开发高效和安全的Web应用程序具有积极的意义。同时,这种体系结构可以用在工业化的远程状态监测、远程故障诊断等诸多领域,具有较大的应用参考价值。
[1] 任泰明. 基于B/S结构的软件开发技术[M] . 西安:西安电子科技大学出版社,2006:20-50.
[2] 王仲生.智能故障诊断与容错控制[M] .西安:西北工业大学出版社,2005:415-438.
[3] 万钧,吴筱媛,等. 一个基于浏览器与组件技术的Web信息发布模型[J] . 计算机工程与应用,2002(8):159-161.
[4] 朱前飞,高芒. COM组件和ActiveX技术在B/S体系结构中的应用[J] . 计算机工程与设计,2005(3):654-656.
[5] 查卫翔,谭南林. ActiveX控件在基于B/S结构的远程监控中的应用[J] .北京交通大学学报,2002,26(1):58-62.
[6] 毛红保,徐卿,梁伟. 基于Web的远程故障诊断技术研究[J] . 计算机工程与设计,2005, 26(3):686-687.