ActiveX技術在B/S模式監(jiān)控系統(tǒng)中的應用
——
但是由于各個系統(tǒng)具體需要的不同,要建立符合工程實際情況,滿足用戶要求的系統(tǒng),這就需要根據(jù)工程的具體情況,采用具體的技術手段來組建具有自己特色的系統(tǒng)。本文以基于B/S模式的監(jiān)控管理系統(tǒng)為例,對ActiveX技術進行了詳細研究。采用ActiveX技術和B/S模式結合的方式,實現(xiàn)了某大型工程高效實時的監(jiān)控需求。
1 分析
1.1 B/S模式監(jiān)控系統(tǒng)的系統(tǒng)架構與功能
在B/S體系結構中,用戶通過瀏覽器向分布在網(wǎng)絡上的Web服務器發(fā)出請求,Web服務器接受客戶請求,首先需執(zhí)行相應的擴展應用程序執(zhí)行對應的操作,然后將相應的信息返回給瀏覽器。
基于B/S模式的管理信息系統(tǒng)從結構上主要分為三個層次,如圖1所示:圖1B/S(Browser/Server)模式系統(tǒng)架構圖分別為Internet瀏覽器、Web服務器和數(shù)據(jù)庫服務器。用戶通過客戶端的Internet瀏覽器以表單或者其他形式向Web服務器發(fā)送HTTP請求,Web服務器請求數(shù)據(jù)庫服務器,并將獲得的結果以HTML頁面的形式返回給客戶端的Internet瀏覽器,供用戶查看。如圖1所示。
B/S模式具有很多優(yōu)勢:平臺無關性;使用簡單,易于擴展;減少數(shù)據(jù)庫并發(fā)用戶;代碼可重用性好,易于維護。因此B/S模式逐漸成為一種流行的應用系統(tǒng)開發(fā)平臺。然而B/S也并非完美,隨著應用的逐步普及,B/S模式逐漸暴露了它的缺陷,如執(zhí)行效率低,Web服務器負擔過重、安全性有待加強等。特別對于一些實時性要求比較高、數(shù)據(jù)量比較大的應用系統(tǒng),比如實時監(jiān)控遠程控制等,B/S模式無法滿足系統(tǒng)的需求。
1.2 ActiveX組件技術
ActiveX是Microsoft提出的采用COM(ComponentObject Model)和DCOM(Distributed Component ObjectModel)使軟件組件在網(wǎng)絡環(huán)境中進行交互的一組技術集,它是在COM之上建立的一種理論和概念,與具體的編程語言無關,包括ActiveX Dll組件和ActiveX控件。
ActiveX控件同其他的ActiveX組件相比具有以下特點:能通過設置屬性控制其行為,從而實現(xiàn)用戶接口;在客戶端的瀏覽器執(zhí)行,能夠緩解服務器的負荷;在有需要時,還可以由應用程序調(diào)用ActiveX摔件,擴展應用程序的功能。作為針對Web應用開發(fā)的技術,ActiveX控件被廣泛應用于Web服務器以及客戶端應用的各個方面。
ActiveX控件常用的形式是.exe、.dll或.ocx的形式。通常以動態(tài)鏈接庫形式存在,因此必須在容器中運行。ActiveX控件能夠直接嵌入到瀏覽器和其他應用程序中,并具有和應用程序一樣強大的數(shù)據(jù)處理,磁盤操作等能力。
ActiveX控件在以瀏覽器為主的結構中的作用如圖2所示。
ActiveX控件由三大要素組成:屬性、方法和事件。屬性是控件的基本特性,是控制的一部分,在控制裝入時或控制正在進行時可以改變;方法是控件提供給外界的一個接口,類似與一個函數(shù)調(diào)用接口,用戶可通過方法來設置控件的某些性質(zhì)、執(zhí)行某項動作或者進行某些運算以實現(xiàn)一定的功能;事件是控件對外部操作或控件內(nèi)部處于某種狀態(tài)時所發(fā)出的通知,它由控件本身所觸發(fā),并與容器進行通信。從外界看,ActiveX控件就像一個黑盒,用戶只能看到它的三大要素,如圖3所示。
要使用ActiveX控件,首先要創(chuàng)建控件實例對象,對控件進行實例化后,對控件屬性的設置和操作就可以通過實例對象的屬性和方法來實現(xiàn)。ActiveX控件能在ASP.NET頁面中通過<object>標簽創(chuàng)建,<object>標簽包含類id(clsid),用于識別需要實例化的ActiveX控件。如下面的代碼所示:
<object>元素的屬性有id,classid,codebase,height,width等。
其中id的屬性值objectJK是用于唯一表示AetiveX控件的名稱,classid屬性值“clsid:49F8CFDF-6B01-4115-BAF4-D579DB51931B”是AetiveX控件在系統(tǒng)中唯一標識號,codebase屬性值“../ikocx.cab”是AetiveX控件的安裝文件所在的目錄,此處指位于服務器根目錄下。
控件技術的具體實現(xiàn)如下:當瀏覽器發(fā)出請求時,Web服務器向用戶瀏覽器回傳內(nèi)嵌ActiveX控件的頁面,由瀏覽器負責解釋。在解釋過程中首先用該控件的在頁面中注明的id值先在本地的注冊表內(nèi)進行查詢,若已經(jīng)存在,則說明該控件已經(jīng)在本地安裝,然后通過灃冊表中的相關信息直接使用該控件;否則就要根據(jù)頁面中所提示的該控件所在的服務器上的路徑到服務器上去下載并且自動完成在本地的安裝注冊,使該控件成為本地資源,供以后使用。當Web服務器提供更高版本的ActiveX控件時,瀏覽器會自動下載新的摔件,并自動安裝,覆蓋原來的控件。
2 應用實例
2.1 系統(tǒng)結構設計
作者參加了某大型系統(tǒng)工程的監(jiān)控分系統(tǒng)的研究與開發(fā),在系統(tǒng)結構的設計中,需要充分考慮系統(tǒng)特點、用戶需求和人機交互。諸如系統(tǒng)要完成對高速硬件設備的數(shù)據(jù)進行采集分析,將數(shù)據(jù)處理匯報給用戶;要實現(xiàn)在線監(jiān)控,預警,數(shù)據(jù)庫查詢分析等功能,對上作服務器或臺式機要能遠程抓屏;住系統(tǒng)出現(xiàn)問題之后能夠智能設置高速硬件設備和后端處理設備的各種工作參數(shù),糾正一般性錯誤。而對于系統(tǒng)管理人員米講,希望能夠隨時在任何一臺終端上及時準確的了解現(xiàn)場的全部狀況。如果系統(tǒng)出現(xiàn)問題,要迅速知曉問題出現(xiàn)的環(huán)節(jié)和解決措施?;谝陨蟽煞矫娴目紤],我們采取了ActiveX組件和B/S模式結合的系統(tǒng)。如圖4是設計監(jiān)控系統(tǒng)的結構框圖。
設計時,對于事務性強,交互少,數(shù)據(jù)傳輸,數(shù)據(jù)處理量小的功能采用B/S模式,它主要是數(shù)據(jù)發(fā)布,數(shù)據(jù)庫查詢和操作。對于實時性高、刷新率快、數(shù)據(jù)處理量大的狀態(tài)顯示功能則采用了ActiveX組件嵌入瀏覽器的技術,ActiveX組件直接與被監(jiān)控的設備進行通信,對數(shù)據(jù)記錄并進行處理。對于交互性強、安全性要求高的配置部分則采用應用程序和ActiveX組件通信的方式,ActiveX組件從應用程序得到數(shù)據(jù)庫中的配置參數(shù)并進行數(shù)據(jù)處理,配置被監(jiān)控硬件設備。在被監(jiān)控設備的服務端支持下,ActiveX組件還具有遠程抓屏的功能。
系統(tǒng)所有的工作參數(shù)都保存在數(shù)據(jù)庫服務器中,Web服務器程序和應用程序常駐內(nèi)存,ActiveX組件既可以由網(wǎng)頁嵌入調(diào)用,也可以由應用程序直接調(diào)用。ActiveX組件由網(wǎng)頁嵌入調(diào)用時,用戶可在任何一臺終端上實現(xiàn)所有的監(jiān)控,由應用程序直接調(diào)用時,擴展了應用程序的功能。
2.2 ActiveX組件的開發(fā)
本文主要設計并實現(xiàn)了如下幾個ActiveX功能組件。
2.2.1 設備工作狀態(tài)顯示
開發(fā)ActiveX控件時存程序中保留相應的數(shù)據(jù)接口,以便傳送控制量和接收實時數(shù)據(jù)。在本工程中,為了提高被監(jiān)控設備的工作效率,被監(jiān)控設備對監(jiān)控查詢只需要返回原始的工作狀態(tài)信息,不需要做任何處理,對數(shù)據(jù)的處理由ActiveX控件在終端上完成。再將用戶需要的結果數(shù)據(jù)在網(wǎng)頁上通過一定形式顯示出來,如數(shù)字顯示、圖形顯示、曲線顯示、表格顯示等。數(shù)字顯示最簡單,直接把讀到的數(shù)據(jù)顯示出來就行了。圖形顯示則需用ActiveX控件將數(shù)據(jù)模擬為現(xiàn)實中的儀表信號燈等設備顯示出來。曲線顯示需用ActiveX控件將數(shù)據(jù)按一定的比例在橫坐標,縱坐標上繪制成曲線。表格顯示用于數(shù)據(jù)比較多時,數(shù)據(jù)先在ActiveX控件上進行處理,然后再通過ActiveX控件的表格顯示出來。
ActiveX組件相應的監(jiān)控方法能根據(jù)系統(tǒng)中結點的變化調(diào)整顯示界面,根據(jù)系統(tǒng)數(shù)據(jù)流的流向分布進行分析,設計了常見故障的檢測程序,在系統(tǒng)結點出現(xiàn)故障時,能夠分析出相應的故障結點及原因,并發(fā)出報警信號(聲音及閃爍),并向常駐內(nèi)存的服務器應用程序發(fā)出消息。
2.2.2 配置設備工作參數(shù)
當終端上的監(jiān)控ActiveX控件率先檢測到系統(tǒng)中的問題需要重新配置時,會向服務器應用程序請求數(shù)據(jù)庫操作,如果數(shù)據(jù)庫中正在配置標志為1,則不進行任何操作,如果標志為0,則將標志置1,然后進行參數(shù)配置,配置完畢,狀態(tài)恢復正常后將標志恢復為0。如果用戶沒有在任何終端上監(jiān)控系統(tǒng)的工作狀態(tài),常駐服務器內(nèi)存的應用程序會調(diào)用ActiveX控件的監(jiān)控方法,一直監(jiān)控所有被監(jiān)控設備,當系統(tǒng)中的工作結點發(fā)生變化,或檢測到硬件狀態(tài)異常時,需要調(diào)用ActiveX控件對相應硬件設備進行重新配置。
2.2.3 遠程控制功能
為了能做到在任何一臺終端上對工作服務器和臺式機的更有效的臨控,ActiveX組件實現(xiàn)了遠程控制這一功能。如圖5所示。
用戶在任何一臺終端上,可以對服務器或者臺式機進行遠程控制,由于遠程抓屏實時性高,為了減少被監(jiān)控設備的負荷,我們設計了同一臺硬件設備最多向一個終端提交遠程控制的限制,從而避免多個用戶同時操作一臺機器出現(xiàn)沖突和競爭。
2.3 ActiveX組件的安全性
因為ActiveX組件具有和應用程序一樣強大的功能,在Internet上,當用戶瀏覽到帶ActiveX組件的網(wǎng)頁時,IE瀏覽器在自動下載和提示用戶安裝之前,必須經(jīng)過用戶的同意及確認才可。
我們設計的ActiveX控件或插什是白行開發(fā)的,其狀態(tài)通常是未標記為安全或足未經(jīng)簽名驗證的。由于IE瀏覽器的默認安全設置是禁止下載、運行未簽名的ActiveX控件和插件,因此客戶機必須在IE瀏覽器的安傘設置頁面中將“ActiveX控件和插件”下的相關選項設置由“禁用”改為“啟用”后,才能正常地進行應用。
啟用下載、運行未經(jīng)簽名驗證的ActiveX控件和插件后,一些未經(jīng)簽名驗證的插件會趁虛而入,它們會在用戶瀏覽網(wǎng)頁的時候,在用戶毫不知曉的情況下自動下載到本地計算機并加載到IE瀏覽器中。由于這些ActiveX摔件和插什未經(jīng)簽名驗證,不儀會影響系統(tǒng)的安全性,同時企業(yè)內(nèi)部用戶在使用IE瀏覽器進行S應用時,應用調(diào)用的ActiveX控件和這些已經(jīng)自動加載到IE瀏覽器中未經(jīng)簽名驗證的控件或插件可能發(fā)生訪問沖突,造成應用異常中止。
當然,在工程內(nèi)部可信賴的網(wǎng)絡環(huán)境中,這種情況發(fā)生的可能性很小,但是在系統(tǒng)內(nèi)部感染病毒的情況下也有可能發(fā)生。如何有效地管理這些已經(jīng)加載到IE瀏覽器的未簽名ActiveX控件,同時防止系統(tǒng)繼續(xù)自動下載、加載未經(jīng)簽名驗證的ActiveX摔件呢?我們可以采取以下三種方法:
禁用/刪除IE瀏覽器的加載項;分區(qū)域設置IE的安全選項,只加載來自服務器站點的ActiveX控件;對Windows Server 2003,我們可以使用管理域中的ActiveX控件的組策略工具。
采用上面這三種方法的任何一種之后,我們可以放心的使用我們自己設計的ActiveX控件了。但對于最新版本的Windows操作系統(tǒng)用戶,在訪問到帶ActiveX組件的頁面時,IE會彈出一個提示:“單擊以激活并使用此控件”。這是因為Microsoft在2006年2月28日發(fā)布了安全通報MS06-013,討論IE的非安全更新912945。應用此更新之后,只有當用戶手動激活其用戶界面時,才能與網(wǎng)頁中加載的Microsoft ActiveX進行交互。如果用戶不點擊激活,ActiveX組件就無法發(fā)揮作用。
在實際的軟件設計中,為了方便用戶使用瀏覽器來進行監(jiān)控而不需要額外的點擊,我們修改了使用ActiveX組件的方式。在網(wǎng)頁中使用ActiveX組件的傳統(tǒng)方式是:<object classid=”clsid:ActiveX組件ID號”:></object>
因為一個頁面的所有</object>的活動內(nèi)容都不會被自動激活。我們采用外部調(diào)用JavaScript代碼的document.write方法,把JavaScript代碼和調(diào)用ActiveX控件的頁面寫在不同的文件中。這樣雖然麻煩一些,但是不強制用戶通過點擊來激活控件,方便了用戶使用。
木文中將ActiveX技術應用于B/S監(jiān)控軟件中,不僅增強了B/S監(jiān)控軟件的功能,加快了軟件的開發(fā)速度,而且適應了當前軟件開發(fā)向模塊化、開放化發(fā)展的趨勢,提高了系統(tǒng)的實時性、可靠性和可擴展性。
ActiveX技術應用于B/S模式彌補了單B/S模式的不足,比B/S和C/S結合的方式簡單實用(不需要安裝C/S客戶端),可以用在商業(yè)化的在線殺毒,在線點播,在線考試等諸多領域,具有非常光明的應用前景。
評論