新聞中心

EEPW首頁(yè) > 消費(fèi)電子 > 設(shè)計(jì)應(yīng)用 > ActiveX技術(shù)在B/S模式監(jiān)控系統(tǒng)中的應(yīng)用

ActiveX技術(shù)在B/S模式監(jiān)控系統(tǒng)中的應(yīng)用

——
作者: 時(shí)間:2007-09-24 來(lái)源:電子技術(shù) 收藏
隨著Internet技術(shù)的飛速發(fā)展,利用Web服務(wù)器的信息服務(wù)能力和數(shù)據(jù)庫(kù)的數(shù)據(jù)處理能力來(lái)構(gòu)造大規(guī)模的系統(tǒng)已成為當(dāng)前人們關(guān)注的熱點(diǎn)。與此同時(shí),軟件的開(kāi)發(fā)環(huán)境和開(kāi)發(fā)技術(shù)也在不斷的變化,B/S(Browser/server)模式管理信息系統(tǒng)與傳統(tǒng)的C/S(client/server)模式管理信息系統(tǒng)相比,具有使用簡(jiǎn)單、維護(hù)方便、具有廣泛通用性和跨平臺(tái)性、安全性好等優(yōu)點(diǎn),因而日益受到廣大用戶的青睞。 

但是由于各個(gè)系統(tǒng)具體需要的不同,要建立符合工程實(shí)際情況,滿足用戶要求的系統(tǒng),這就需要根據(jù)工程的具體情況,采用具體的技術(shù)手段來(lái)組建具有自己特色的系統(tǒng)。本文以基于B/S模式的監(jiān)控管理系統(tǒng)為例,對(duì)術(shù)進(jìn)行了詳細(xì)研究。采用術(shù)和B/S模式結(jié)合的方式,實(shí)現(xiàn)了某大型工程高效實(shí)時(shí)的監(jiān)控需求。

1 分析

1.1 B/S模式監(jiān)控系統(tǒng)的系統(tǒng)架構(gòu)與功能

在B/S體系結(jié)構(gòu)中,用戶通過(guò)瀏覽器向分布在網(wǎng)絡(luò)上的Web服務(wù)器發(fā)出請(qǐng)求,Web服務(wù)器接受客戶請(qǐng)求,首先需執(zhí)行相應(yīng)的擴(kuò)展應(yīng)用程序執(zhí)行對(duì)應(yīng)的操作,然后將相應(yīng)的信息返回給瀏覽器。

基于B/S模式的管理信息系統(tǒng)從結(jié)構(gòu)上主要分為三個(gè)層次,如圖1所示:圖1B/S(Browser/Server)模式系統(tǒng)架構(gòu)圖分別為Internet瀏覽器、Web服務(wù)器和數(shù)據(jù)庫(kù)服務(wù)器。用戶通過(guò)客戶端的Internet瀏覽器以表單或者其他形式向Web服務(wù)器發(fā)送HTTP請(qǐng)求,Web服務(wù)器請(qǐng)求數(shù)據(jù)庫(kù)服務(wù)器,并將獲得的結(jié)果以HTML頁(yè)面的形式返回給客戶端的Internet瀏覽器,供用戶查看。如圖1所示。

 

具有很多優(yōu)勢(shì):平臺(tái)無(wú)關(guān)性;使用簡(jiǎn)單,易于擴(kuò)展;減少數(shù)據(jù)庫(kù)并發(fā)用戶;代碼可重用性好,易于維護(hù)。因此B/S模式逐漸成為一種流行的應(yīng)用系統(tǒng)開(kāi)發(fā)平臺(tái)。然而B(niǎo)/S也并非完美,隨著應(yīng)用的逐步普及,B/S模式逐漸暴露了它的缺陷,如執(zhí)行效率低,Web服務(wù)器負(fù)擔(dān)過(guò)重、安全性有待加強(qiáng)等。特別對(duì)于一些實(shí)時(shí)性要求比較高、數(shù)據(jù)量比較大的應(yīng)用系統(tǒng),比如實(shí)時(shí)監(jiān)控遠(yuǎn)程控制等,B/S模式無(wú)法滿足系統(tǒng)的需求。

1.2 ActiveX組件技術(shù)

ActiveX是Microsoft提出的采用COM(ComponentObject Model)和DCOM(Distributed Component ObjectModel)使軟件組件在網(wǎng)絡(luò)環(huán)境中進(jìn)行交互的一組技術(shù)集,它是在COM之上建立的一種理論和概念,與具體的編程語(yǔ)言無(wú)關(guān),包括ActiveX Dll組件和ActiveX控件。

ActiveX控件同其他的ActiveX組件相比具有以下特點(diǎn):能通過(guò)設(shè)置屬性控制其行為,從而實(shí)現(xiàn)用戶接口;在客戶端的瀏覽器執(zhí)行,能夠緩解服務(wù)器的負(fù)荷;在有需要時(shí),還可以由應(yīng)用程序調(diào)用ActiveX摔件,擴(kuò)展應(yīng)用程序的功能。作為針對(duì)Web應(yīng)用開(kāi)發(fā)的技術(shù),ActiveX控件被廣泛應(yīng)用于Web服務(wù)器以及客戶端應(yīng)用的各個(gè)方面。

ActiveX控件常用的形式是.exe、.dll或.ocx的形式。通常以動(dòng)態(tài)鏈接庫(kù)形式存在,因此必須在容器中運(yùn)行。ActiveX控件能夠直接嵌入到瀏覽器和其他應(yīng)用程序中,并具有和應(yīng)用程序一樣強(qiáng)大的數(shù)據(jù)處理,磁盤(pán)操作等能力。

ActiveX控件在以瀏覽器為主的結(jié)構(gòu)中的作用如圖2所示。

 

ActiveX控件由三大要素組成:屬性、方法和事件。屬性是控件的基本特性,是控制的一部分,在控制裝入時(shí)或控制正在進(jìn)行時(shí)可以改變;方法是控件提供給外界的一個(gè)接口,類(lèi)似與一個(gè)函數(shù)調(diào)用接口,用戶可通過(guò)方法來(lái)設(shè)置控件的某些性質(zhì)、執(zhí)行某項(xiàng)動(dòng)作或者進(jìn)行某些運(yùn)算以實(shí)現(xiàn)一定的功能;事件是控件對(duì)外部操作或控件內(nèi)部處于某種狀態(tài)時(shí)所發(fā)出的通知,它由控件本身所觸發(fā),并與容器進(jìn)行通信。從外界看,ActiveX控件就像一個(gè)黑盒,用戶只能看到它的三大要素,如圖3所示。 



 

要使用ActiveX控件,首先要?jiǎng)?chuàng)建控件實(shí)例對(duì)象,對(duì)控件進(jìn)行實(shí)例化后,對(duì)控件屬性的設(shè)置和操作就可以通過(guò)實(shí)例對(duì)象的屬性和方法來(lái)實(shí)現(xiàn)。ActiveX控件能在ASP.NET頁(yè)面中通過(guò)<object>標(biāo)簽創(chuàng)建,<object>標(biāo)簽包含類(lèi)id(clsid),用于識(shí)別需要實(shí)例化的ActiveX控件。如下面的代碼所示:

 

<object>元素的屬性有id,classid,codebase,height,width等。

其中id的屬性值objectJK是用于唯一表示AetiveX控件的名稱,classid屬性值“clsid:49F8CFDF-6B01-4115-BAF4-D579DB51931B”是AetiveX控件在系統(tǒng)中唯一標(biāo)識(shí)號(hào),codebase屬性值“../ikocx.cab”是AetiveX控件的安裝文件所在的目錄,此處指位于服務(wù)器根目錄下。

控件技術(shù)的具體實(shí)現(xiàn)如下:當(dāng)瀏覽器發(fā)出請(qǐng)求時(shí),Web服務(wù)器向用戶瀏覽器回傳內(nèi)嵌ActiveX控件的頁(yè)面,由瀏覽器負(fù)責(zé)解釋。在解釋過(guò)程中首先用該控件的在頁(yè)面中注明的id值先在本地的注冊(cè)表內(nèi)進(jìn)行查詢,若已經(jīng)存在,則說(shuō)明該控件已經(jīng)在本地安裝,然后通過(guò)灃冊(cè)表中的相關(guān)信息直接使用該控件;否則就要根據(jù)頁(yè)面中所提示的該控件所在的服務(wù)器上的路徑到服務(wù)器上去下載并且自動(dòng)完成在本地的安裝注冊(cè),使該控件成為本地資源,供以后使用。當(dāng)Web服務(wù)器提供更高版本的ActiveX控件時(shí),瀏覽器會(huì)自動(dòng)下載新的摔件,并自動(dòng)安裝,覆蓋原來(lái)的控件。

2 應(yīng)用實(shí)例

2.1 系統(tǒng)結(jié)構(gòu)設(shè)計(jì)

作者參加了某大型系統(tǒng)工程的監(jiān)控分系統(tǒng)的研究與開(kāi)發(fā),在系統(tǒng)結(jié)構(gòu)的設(shè)計(jì)中,需要充分考慮系統(tǒng)特點(diǎn)、用戶需求和人機(jī)交互。諸如系統(tǒng)要完成對(duì)高速硬件設(shè)備的數(shù)據(jù)進(jìn)行采集分析,將數(shù)據(jù)處理匯報(bào)給用戶;要實(shí)現(xiàn)在線監(jiān)控,預(yù)警,數(shù)據(jù)庫(kù)查詢分析等功能,對(duì)上作服務(wù)器或臺(tái)式機(jī)要能遠(yuǎn)程抓屏;住系統(tǒng)出現(xiàn)問(wèn)題之后能夠智能設(shè)置高速硬件設(shè)備和后端處理設(shè)備的各種工作參數(shù),糾正一般性錯(cuò)誤。而對(duì)于系統(tǒng)管理人員米講,希望能夠隨時(shí)在任何一臺(tái)終端上及時(shí)準(zhǔn)確的了解現(xiàn)場(chǎng)的全部狀況。如果系統(tǒng)出現(xiàn)問(wèn)題,要迅速知曉問(wèn)題出現(xiàn)的環(huán)節(jié)和解決措施。基于以上兩方面的考慮,我們采取了ActiveX組件和B/S模式結(jié)合的系統(tǒng)。如圖4是設(shè)計(jì)監(jiān)控系統(tǒng)的結(jié)構(gòu)框圖。

 

設(shè)計(jì)時(shí),對(duì)于事務(wù)性強(qiáng),交互少,數(shù)據(jù)傳輸,數(shù)據(jù)處理量小的功能采用B/S模式,它主要是數(shù)據(jù)發(fā)布,數(shù)據(jù)庫(kù)查詢和操作。對(duì)于實(shí)時(shí)性高、刷新率快、數(shù)據(jù)處理量大的狀態(tài)顯示功能則采用了ActiveX組件嵌入瀏覽器的技術(shù),ActiveX組件直接與被監(jiān)控的設(shè)備進(jìn)行通信,對(duì)數(shù)據(jù)記錄并進(jìn)行處理。對(duì)于交互性強(qiáng)、安全性要求高的配置部分則采用應(yīng)用程序和ActiveX組件通信的方式,ActiveX組件從應(yīng)用程序得到數(shù)據(jù)庫(kù)中的配置參數(shù)并進(jìn)行數(shù)據(jù)處理,配置被監(jiān)控硬件設(shè)備。在被監(jiān)控設(shè)備的服務(wù)端支持下,ActiveX組件還具有遠(yuǎn)程抓屏的功能。

系統(tǒng)所有的工作參數(shù)都保存在數(shù)據(jù)庫(kù)服務(wù)器中,Web服務(wù)器程序和應(yīng)用程序常駐內(nèi)存,ActiveX組件既可以由網(wǎng)頁(yè)嵌入調(diào)用,也可以由應(yīng)用程序直接調(diào)用。ActiveX組件由網(wǎng)頁(yè)嵌入調(diào)用時(shí),用戶可在任何一臺(tái)終端上實(shí)現(xiàn)所有的監(jiān)控,由應(yīng)用程序直接調(diào)用時(shí),擴(kuò)展了應(yīng)用程序的功能。

2.2 ActiveX組件的開(kāi)發(fā)

本文主要設(shè)計(jì)并實(shí)現(xiàn)了如下幾個(gè)ActiveX功能組件。

2.2.1 設(shè)備工作狀態(tài)顯示

開(kāi)發(fā)ActiveX控件時(shí)存程序中保留相應(yīng)的數(shù)據(jù)接口,以便傳送控制量和接收實(shí)時(shí)數(shù)據(jù)。在本工程中,為了提高被監(jiān)控設(shè)備的工作效率,被監(jiān)控設(shè)備對(duì)監(jiān)控查詢只需要返回原始的工作狀態(tài)信息,不需要做任何處理,對(duì)數(shù)據(jù)的處理由ActiveX控件在終端上完成。再將用戶需要的結(jié)果數(shù)據(jù)在網(wǎng)頁(yè)上通過(guò)一定形式顯示出來(lái),如數(shù)字顯示、圖形顯示、曲線顯示、表格顯示等。數(shù)字顯示最簡(jiǎn)單,直接把讀到的數(shù)據(jù)顯示出來(lái)就行了。圖形顯示則需用ActiveX控件將數(shù)據(jù)模擬為現(xiàn)實(shí)中的儀表信號(hào)燈等設(shè)備顯示出來(lái)。曲線顯示需用ActiveX控件將數(shù)據(jù)按一定的比例在橫坐標(biāo),縱坐標(biāo)上繪制成曲線。表格顯示用于數(shù)據(jù)比較多時(shí),數(shù)據(jù)先在ActiveX控件上進(jìn)行處理,然后再通過(guò)ActiveX控件的表格顯示出來(lái)。

ActiveX組件相應(yīng)的監(jiān)控方法能根據(jù)系統(tǒng)中結(jié)點(diǎn)的變化調(diào)整顯示界面,根據(jù)系統(tǒng)數(shù)據(jù)流的流向分布進(jìn)行分析,設(shè)計(jì)了常見(jiàn)故障的檢測(cè)程序,在系統(tǒng)結(jié)點(diǎn)出現(xiàn)故障時(shí),能夠分析出相應(yīng)的故障結(jié)點(diǎn)及原因,并發(fā)出報(bào)警信號(hào)(聲音及閃爍),并向常駐內(nèi)存的服務(wù)器應(yīng)用程序發(fā)出消息。

2.2.2 配置設(shè)備工作參數(shù)

當(dāng)終端上的監(jiān)控ActiveX控件率先檢測(cè)到系統(tǒng)中的問(wèn)題需要重新配置時(shí),會(huì)向服務(wù)器應(yīng)用程序請(qǐng)求數(shù)據(jù)庫(kù)操作,如果數(shù)據(jù)庫(kù)中正在配置標(biāo)志為1,則不進(jìn)行任何操作,如果標(biāo)志為0,則將標(biāo)志置1,然后進(jìn)行參數(shù)配置,配置完畢,狀態(tài)恢復(fù)正常后將標(biāo)志恢復(fù)為0。如果用戶沒(méi)有在任何終端上監(jiān)控系統(tǒng)的工作狀態(tài),常駐服務(wù)器內(nèi)存的應(yīng)用程序會(huì)調(diào)用ActiveX控件的監(jiān)控方法,一直監(jiān)控所有被監(jiān)控設(shè)備,當(dāng)系統(tǒng)中的工作結(jié)點(diǎn)發(fā)生變化,或檢測(cè)到硬件狀態(tài)異常時(shí),需要調(diào)用ActiveX控件對(duì)相應(yīng)硬件設(shè)備進(jìn)行重新配置。

2.2.3 遠(yuǎn)程控制功能

為了能做到在任何一臺(tái)終端上對(duì)工作服務(wù)器和臺(tái)式機(jī)的更有效的臨控,ActiveX組件實(shí)現(xiàn)了遠(yuǎn)程控制這一功能。如圖5所示。

 

用戶在任何一臺(tái)終端上,可以對(duì)服務(wù)器或者臺(tái)式機(jī)進(jìn)行遠(yuǎn)程控制,由于遠(yuǎn)程抓屏實(shí)時(shí)性高,為了減少被監(jiān)控設(shè)備的負(fù)荷,我們?cè)O(shè)計(jì)了同一臺(tái)硬件設(shè)備最多向一個(gè)終端提交遠(yuǎn)程控制的限制,從而避免多個(gè)用戶同時(shí)操作一臺(tái)機(jī)器出現(xiàn)沖突和競(jìng)爭(zhēng)。

2.3 ActiveX組件的安全性

因?yàn)锳ctiveX組件具有和應(yīng)用程序一樣強(qiáng)大的功能,在Internet上,當(dāng)用戶瀏覽到帶ActiveX組件的網(wǎng)頁(yè)時(shí),IE瀏覽器在自動(dòng)下載和提示用戶安裝之前,必須經(jīng)過(guò)用戶的同意及確認(rèn)才可。

我們?cè)O(shè)計(jì)的ActiveX控件或插什是白行開(kāi)發(fā)的,其狀態(tài)通常是未標(biāo)記為安全或足未經(jīng)簽名驗(yàn)證的。由于IE瀏覽器的默認(rèn)安全設(shè)置是禁止下載、運(yùn)行未簽名的ActiveX控件和插件,因此客戶機(jī)必須在IE瀏覽器的安傘設(shè)置頁(yè)面中將“ActiveX控件和插件”下的相關(guān)選項(xiàng)設(shè)置由“禁用”改為“啟用”后,才能正常地進(jìn)行應(yīng)用。

啟用下載、運(yùn)行未經(jīng)簽名驗(yàn)證的ActiveX控件和插件后,一些未經(jīng)簽名驗(yàn)證的插件會(huì)趁虛而入,它們會(huì)在用戶瀏覽網(wǎng)頁(yè)的時(shí)候,在用戶毫不知曉的情況下自動(dòng)下載到本地計(jì)算機(jī)并加載到IE瀏覽器中。由于這些ActiveX摔件和插什未經(jīng)簽名驗(yàn)證,不儀會(huì)影響系統(tǒng)的安全性,同時(shí)企業(yè)內(nèi)部用戶在使用IE瀏覽器進(jìn)行S應(yīng)用時(shí),應(yīng)用調(diào)用的ActiveX控件和這些已經(jīng)自動(dòng)加載到IE瀏覽器中未經(jīng)簽名驗(yàn)證的控件或插件可能發(fā)生訪問(wèn)沖突,造成應(yīng)用異常中止。

當(dāng)然,在工程內(nèi)部可信賴的網(wǎng)絡(luò)環(huán)境中,這種情況發(fā)生的可能性很小,但是在系統(tǒng)內(nèi)部感染病毒的情況下也有可能發(fā)生。如何有效地管理這些已經(jīng)加載到IE瀏覽器的未簽名ActiveX控件,同時(shí)防止系統(tǒng)繼續(xù)自動(dòng)下載、加載未經(jīng)簽名驗(yàn)證的ActiveX摔件呢?我們可以采取以下三種方法:

禁用/刪除IE瀏覽器的加載項(xiàng);分區(qū)域設(shè)置IE的安全選項(xiàng),只加載來(lái)自服務(wù)器站點(diǎn)的ActiveX控件;對(duì)Windows Server 2003,我們可以使用管理域中的ActiveX控件的組策略工具。

采用上面這三種方法的任何一種之后,我們可以放心的使用我們自己設(shè)計(jì)的ActiveX控件了。但對(duì)于最新版本的Windows用戶,在訪問(wèn)到帶ActiveX組件的頁(yè)面時(shí),IE會(huì)彈出一個(gè)提示:“單擊以激活并使用此控件”。這是因?yàn)镸icrosoft在2006年2月28日發(fā)布了安全通報(bào)MS06-013,討論IE的非安全更新912945。應(yīng)用此更新之后,只有當(dāng)用戶手動(dòng)激活其用戶界面時(shí),才能與網(wǎng)頁(yè)中加載的Microsoft ActiveX進(jìn)行交互。如果用戶不點(diǎn)擊激活,ActiveX組件就無(wú)法發(fā)揮作用。

在實(shí)際的軟件設(shè)計(jì)中,為了方便用戶使用瀏覽器來(lái)進(jìn)行監(jiān)控而不需要額外的點(diǎn)擊,我們修改了使用ActiveX組件的方式。在網(wǎng)頁(yè)中使用ActiveX組件的傳統(tǒng)方式是:<object classid=”clsid:ActiveX組件ID號(hào)”:></object>

因?yàn)橐粋€(gè)頁(yè)面的所有</object>的活動(dòng)內(nèi)容都不會(huì)被自動(dòng)激活。我們采用外部調(diào)用JavaScript代碼的document.write方法,把JavaScript代碼和調(diào)用ActiveX控件的頁(yè)面寫(xiě)在不同的文件中。這樣雖然麻煩一些,但是不強(qiáng)制用戶通過(guò)點(diǎn)擊來(lái)激活控件,方便了用戶使用。

木文中將術(shù)應(yīng)用于B/S監(jiān)控軟件中,不僅增強(qiáng)了B/S監(jiān)控軟件的功能,加快了軟件的開(kāi)發(fā)速度,而且適應(yīng)了當(dāng)前軟件開(kāi)發(fā)向模塊化、開(kāi)放化發(fā)展的趨勢(shì),提高了系統(tǒng)的實(shí)時(shí)性、可靠性和可擴(kuò)展性。

ActiveX技術(shù)應(yīng)用于B/S模式彌補(bǔ)了單B/S模式的不足,比B/S和C/S結(jié)合的方式簡(jiǎn)單實(shí)用(不需要安裝C/S客戶端),可以用在商業(yè)化的在線殺毒,在線點(diǎn)播,在線考試等諸多領(lǐng)域,具有非常光明的應(yīng)用前景。


評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉