劉 平,魏文軍
(蘭州交通大學光電技術與智能控制教育部重點實驗室,蘭州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.