在應(yīng)用系統(tǒng)中嵌入WWW服務(wù)功能的實(shí)現(xiàn)方法
目前客戶在訪問具有遠(yuǎn)程訪問和控制功能的應(yīng)用系統(tǒng)時(shí),大多都需要安裝專門的客戶端軟件,這給客戶的訪問帶來了很大的不便。隨著全球信息網(wǎng)(Wide World Web)的發(fā)展和Web瀏覽器的廣泛應(yīng)用,在應(yīng)用系統(tǒng)設(shè)計(jì)時(shí)使用HTTP協(xié)議和HTML標(biāo)準(zhǔn)嵌入WWW服務(wù)功能,使應(yīng)用系統(tǒng)與Web連接起來,這樣任何一個(gè)有標(biāo)準(zhǔn)Web瀏覽器的客戶都可以通過Web瀏覽器直接訪問該應(yīng)用系統(tǒng),而不需要安裝專門的客戶端軟件。
這里設(shè)計(jì)的通信線路實(shí)時(shí)狀態(tài)信息監(jiān)視系統(tǒng)主要是對(duì)多路通信線路的收電平、發(fā)電平及誤碼率等指標(biāo)進(jìn)行實(shí)時(shí)測(cè)試,并通過網(wǎng)絡(luò)將實(shí)時(shí)測(cè)試結(jié)果送到相應(yīng)的各級(jí)客戶;各級(jí)客戶在遠(yuǎn)端通過Web瀏覽器而不用專門的客戶端程序就可以對(duì)自己所關(guān)心的數(shù)據(jù)進(jìn)行監(jiān)測(cè),通過Web瀏覽器客戶還可以在客戶端選擇所關(guān)心的線路及各類參數(shù),并依據(jù)權(quán)限對(duì)應(yīng)用系統(tǒng)進(jìn)行相應(yīng)的遠(yuǎn)程控制。
在實(shí)時(shí)系統(tǒng)中嵌入WWW服務(wù)功能,主要解決了如下問題:
(1)動(dòng)態(tài)實(shí)時(shí)地改變數(shù)據(jù)網(wǎng)頁,即將需要發(fā)送的數(shù)據(jù)網(wǎng)頁模板在系統(tǒng)啟動(dòng)時(shí)裝入內(nèi)存,根據(jù)實(shí)時(shí)采集的數(shù)據(jù),實(shí)時(shí)改變已裝入內(nèi)存的數(shù)據(jù)網(wǎng)頁。
(2)對(duì)HTTP服務(wù)器端口(80)進(jìn)行監(jiān)聽,處理、響應(yīng)客戶端的各類請(qǐng)求。
(3)實(shí)現(xiàn)安全控制,根據(jù)訪問客戶的IP地址和登錄信息,對(duì)客戶進(jìn)行過濾和權(quán)限設(shè)置,記錄客戶的操作。
(4)根據(jù)各級(jí)客戶的權(quán)限不同,實(shí)現(xiàn)對(duì)不同客戶的同一請(qǐng)求發(fā)送不同的客戶數(shù)據(jù)網(wǎng)頁。
(5)根據(jù)正在訪問客戶的數(shù)量和級(jí)別,動(dòng)態(tài)控制數(shù)據(jù)網(wǎng)頁的發(fā)送和刷新。
1 系統(tǒng)設(shè)計(jì)方法
1.1系統(tǒng)構(gòu)成
通信線路實(shí)時(shí)狀態(tài)信息監(jiān)視系統(tǒng)主要由以下三部分構(gòu)成:數(shù)據(jù)采集子系統(tǒng)、數(shù)據(jù)處理子系統(tǒng)和信息表現(xiàn)子系統(tǒng)。其系統(tǒng)構(gòu)成如圖1所示。
數(shù)據(jù)采集子系統(tǒng)主要由收電平測(cè)量板、發(fā)電平測(cè)量板和誤碼測(cè)量板組成。這些測(cè)量板在信息處理器的控制下,對(duì)各路通信線路的接收電壓、發(fā)送電壓和誤碼等指標(biāo)進(jìn)行測(cè)量,并將測(cè)量數(shù)據(jù)送到信息處理器進(jìn)行處理。
數(shù)據(jù)處理子系統(tǒng)主要由信息處理器、多串口卡和網(wǎng)絡(luò)卡等組成,它是信息處理的核心。一方面控制著數(shù)據(jù)采集子系統(tǒng)各采集板的數(shù)據(jù)采集,接收并處理這些采集板發(fā)送來的數(shù)據(jù),并根據(jù)處理后的數(shù)據(jù)和主頁模板生成公共數(shù)據(jù)主頁;另一方面響應(yīng)本地客戶和網(wǎng)絡(luò)客戶的請(qǐng)求,根據(jù)客戶的請(qǐng)求進(jìn)行相應(yīng)的處理、顯示和控制。
信息表現(xiàn)子系統(tǒng)主要由本地監(jiān)視、控制平臺(tái)和內(nèi)、外部網(wǎng)絡(luò)構(gòu)成。本地客戶通過本地監(jiān)視、控制平臺(tái)監(jiān)視整個(gè)系統(tǒng)的通信線路實(shí)時(shí)狀態(tài)信息,控制系統(tǒng)的工作狀態(tài),設(shè)置網(wǎng)絡(luò)客戶的權(quán)限,根據(jù)需要對(duì)系統(tǒng)進(jìn)行配置和維護(hù);網(wǎng)絡(luò)客戶則根據(jù)自己所擁有的權(quán)限通過Web瀏覽器監(jiān)視應(yīng)用系統(tǒng)中通信線路的實(shí)時(shí)狀態(tài)信息,向系統(tǒng)發(fā)送遠(yuǎn)程控制命令。
1.2嵌入WWW服務(wù)功能的實(shí)現(xiàn)
在應(yīng)用系統(tǒng)中嵌入WWW服務(wù)功能需要完成兩個(gè)方面的工作:一是動(dòng)態(tài)主頁的實(shí)時(shí)生成;二是偵聽?wèi)?yīng)答客戶請(qǐng)求,其具體實(shí)現(xiàn)流程圖如圖2所示。
1.2.1動(dòng)態(tài)主頁生成過程
動(dòng)態(tài)主頁生成過程主要是應(yīng)用系統(tǒng)根據(jù)主頁模板和實(shí)時(shí)采集的數(shù)據(jù),實(shí)時(shí)更新生成通用的公共數(shù)據(jù)主頁;在客戶請(qǐng)求時(shí)依據(jù)客戶的權(quán)限和設(shè)置生成客戶數(shù)據(jù)主頁,發(fā)送給遠(yuǎn)程客戶。其具體過程如下: [!--empirenews.page--]
(1)主頁模板的生成。根據(jù)客戶顯示的需求,采用HTML標(biāo)準(zhǔn),創(chuàng)建在Web瀏覽器上可以瀏覽的主頁模板。對(duì)于主頁模板中需要實(shí)時(shí)更新的數(shù)據(jù)和根據(jù)客戶需求可能會(huì)改變的數(shù)據(jù),采用相應(yīng)的變量代替。
(2)公共數(shù)據(jù)主頁的生成。應(yīng)用系統(tǒng)啟動(dòng)后,將事先生成的主頁模板加載到內(nèi)存中,根據(jù)系統(tǒng)的配置,對(duì)部分公共變量用實(shí)際的內(nèi)容(如各路通信線路的名稱等)進(jìn)行替換,生成公共數(shù)據(jù)主頁。
(3)更新數(shù)據(jù)的生成。系統(tǒng)通過各類數(shù)據(jù)采集板采集各路通信線路中實(shí)時(shí)變化的接收電壓、發(fā)送電壓和誤碼等數(shù)據(jù),并將這些采集的數(shù)據(jù)實(shí)時(shí)送到數(shù)據(jù)處理器進(jìn)行處理,生成客戶需要的收電平、發(fā)電平和誤碼率等實(shí)時(shí)更新數(shù)據(jù)。
(4)公共數(shù)據(jù)主頁的實(shí)時(shí)更新。數(shù)據(jù)處理器生成實(shí)時(shí)更新的數(shù)據(jù)后,將公共數(shù)據(jù)主頁中該數(shù)據(jù)的對(duì)應(yīng)項(xiàng)進(jìn)行更新替換,實(shí)現(xiàn)公共數(shù)據(jù)主頁的實(shí)時(shí)更新。
(5)客戶數(shù)據(jù)主頁的生成。當(dāng)應(yīng)用系統(tǒng)收到客戶請(qǐng)求的發(fā)送主頁消息后,根據(jù)客戶的權(quán)限和需求對(duì)公共數(shù)據(jù)主頁中需要保密、限制的內(nèi)容以及客戶主頁的刷新頻率進(jìn)行更新處理,為各級(jí)別的客戶生成各自的客戶數(shù)據(jù)主頁。這樣處理后對(duì)于不同客戶的同一請(qǐng)求,發(fā)送的客戶主頁信息就可能不同。
1.2.2 應(yīng)答客戶請(qǐng)求過程
應(yīng)答客戶請(qǐng)求的過程主要是應(yīng)用系統(tǒng)在TCP端口(80)上偵聽客戶的連接。當(dāng)連接建立后,為該客戶的請(qǐng)求建立一個(gè)線程,讀取并解析客戶從Web瀏覽器發(fā)送來的請(qǐng)求,并對(duì)請(qǐng)求進(jìn)行安全和權(quán)限控制,應(yīng)答客戶請(qǐng)求,最后關(guān)閉此客戶的連接并退出該線程。具體過程如下:
(1)偵聽客戶請(qǐng)求。應(yīng)用系統(tǒng)啟動(dòng)后首先初始化網(wǎng)絡(luò)設(shè)置,并在80端口打開一個(gè)被動(dòng)的TCP連接,等待接受客戶的連接。
(2)創(chuàng)建客戶請(qǐng)求處理線程。在收到客戶連接后,應(yīng)用系統(tǒng)為該客戶請(qǐng)求創(chuàng)建一個(gè)線程,用來解析、處理、應(yīng)答客戶的請(qǐng)求。
(3)解析客戶請(qǐng)求。應(yīng)用系統(tǒng)根據(jù)請(qǐng)求消息的格式解讀請(qǐng)求消息,如果客戶所請(qǐng)求的動(dòng)作不能實(shí)施或者URI無效,返回一個(gè)錯(cuò)誤狀態(tài)并關(guān)閉該連接,否則對(duì)客戶進(jìn)行安全控制。
(4)安全控制。根據(jù)客戶的IP地址或者登錄信息,判別客戶的權(quán)限。如果客戶不具備所請(qǐng)求動(dòng)作的權(quán)限則返回權(quán)限不足信息并關(guān)閉該連接,否則對(duì)客戶請(qǐng)求進(jìn)行處理,同時(shí)記錄客戶請(qǐng)求內(nèi)容、時(shí)間等信息。
(5)處理客戶請(qǐng)求。根據(jù)客戶的權(quán)限和請(qǐng)求,對(duì)構(gòu)建于內(nèi)存中的公共數(shù)據(jù)主頁信息進(jìn)行進(jìn)一步處理,生成客戶所需要的客戶數(shù)據(jù)主頁。
(6)應(yīng)答客戶請(qǐng)求。對(duì)于客戶的請(qǐng)求為Get方式時(shí),打開該URI所指定的被程序構(gòu)建于內(nèi)存之中客戶數(shù)據(jù)主頁,在發(fā)送以前,應(yīng)用系統(tǒng)為客戶數(shù)據(jù)主頁建立一個(gè)適當(dāng)?shù)念}頭區(qū),其后放一個(gè)空白行,然后將該題頭區(qū)發(fā)送出去,最后發(fā)出客戶數(shù)據(jù)主頁。對(duì)于客戶的請(qǐng)求為Post方式時(shí),根據(jù)解析后的信息對(duì)應(yīng)用系統(tǒng)進(jìn)行相應(yīng)的設(shè)置和操作,實(shí)現(xiàn)客戶的遠(yuǎn)程控制。
(7)關(guān)閉客戶連接,退出線程。
2 關(guān)鍵技術(shù)
2.1處理客戶請(qǐng)求
2.1.1 客戶請(qǐng)求
當(dāng)客戶通過Web瀏覽器向應(yīng)用系統(tǒng)發(fā)出請(qǐng)求時(shí),需要指定一個(gè)全球資源定位器(URL)。URL是某個(gè)特定資源的Web名,用于定位Internet上面的資源,一個(gè)URL的基本格式為:
協(xié)議://主機(jī)名[:端口]/路徑
Web瀏覽器分析該URL,提取協(xié)議(這里是HTTP)、主機(jī)名以及全球資源路徑(URI),并使用提取的協(xié)議向具有該主機(jī)名的網(wǎng)絡(luò)主機(jī)發(fā)起連接。當(dāng)連接建立后,Web瀏覽器發(fā)送請(qǐng)求消息,該消息包含一些可選配的題頭,用于標(biāo)識(shí)該客戶和列出可接受的資源類型。應(yīng)用系統(tǒng)發(fā)送響應(yīng)消息,該消息有一個(gè)狀態(tài)行,后隨一個(gè)或多個(gè)題頭,然后是所請(qǐng)求的資源。
2.1.2 解析客戶請(qǐng)求
對(duì)客戶請(qǐng)求的解析主要是應(yīng)用系統(tǒng)根據(jù)HTTP消息的格式,從客戶發(fā)送來的請(qǐng)求消息中提取客戶請(qǐng)求的內(nèi)容,并向客戶發(fā)送響應(yīng)消息。HTTP消息是客戶發(fā)給應(yīng)用系統(tǒng)的請(qǐng)求或者由應(yīng)用系統(tǒng)傳給客戶的應(yīng)答,消息格式為:
Start-line(開始行)
Message-headers(消息題頭)
CR LF(換行回車符,即空一行)
Message-body(消息正文)
一個(gè)請(qǐng)求包括三部分:開始行、題頭以及正文。開始行是必須有的,題頭及正文則是可選的。在客戶傳給應(yīng)用系統(tǒng)的請(qǐng)求中,開始行就是請(qǐng)求行;在應(yīng)用系統(tǒng)的應(yīng)答中,則是狀態(tài)行。 [!--empirenews.page--]
請(qǐng)求行僅有一行文本,包括三個(gè)區(qū),以CR LF結(jié)束,格式如下:
Method 請(qǐng)求的URI HTTP版本
請(qǐng)求行也僅有一行文本,包括三個(gè)區(qū),以CR LF結(jié)束,格式如下:
HTTP版本 狀態(tài)碼 原因說明文字
2.2 安全控制
在該應(yīng)用系統(tǒng)中主要采用身份限制、密碼保護(hù)、數(shù)據(jù)加密等方法來增強(qiáng)客戶訪問的安全性。
2.2.1 身份限制
當(dāng)應(yīng)用系統(tǒng)接收到客戶發(fā)送來的請(qǐng)求后,提取客戶的IP地址,過濾掉非法IP地址的客戶請(qǐng)求,并判斷合法IP地址的客戶權(quán)限;根據(jù)系統(tǒng)的設(shè)置,為每個(gè)客戶生成并發(fā)送相應(yīng)權(quán)限的客戶數(shù)據(jù)主頁,同時(shí)根據(jù)客戶的遠(yuǎn)程控制權(quán)限響應(yīng)客戶對(duì)應(yīng)用系統(tǒng)的控制,向客戶發(fā)送控制后的結(jié)果信息。
2.2.2 密碼保護(hù)
當(dāng)客戶訪問應(yīng)用系統(tǒng)中需要安全保護(hù)的數(shù)據(jù)主頁,或者遠(yuǎn)程進(jìn)行可能對(duì)應(yīng)用系統(tǒng)造成危害的控制操作時(shí),應(yīng)用系統(tǒng)首先要求客戶進(jìn)行登錄帳號(hào)和密碼。只有經(jīng)過應(yīng)用系統(tǒng)確認(rèn)后,應(yīng)用系統(tǒng)才會(huì)應(yīng)答客戶的這些請(qǐng)求。
2.3 動(dòng)態(tài)控制數(shù)據(jù)發(fā)送
應(yīng)用系統(tǒng)所處理的數(shù)據(jù)是實(shí)時(shí)采集的、不斷變化的,如果客戶要實(shí)時(shí)檢測(cè)到這些采集的數(shù)據(jù),就要按照一定時(shí)間間隔不斷地向應(yīng)用系統(tǒng)發(fā)送頁面刷新請(qǐng)求,應(yīng)用系統(tǒng)根據(jù)客戶請(qǐng)求也不斷地向每一個(gè)客戶實(shí)時(shí)發(fā)送最新的客戶數(shù)據(jù)網(wǎng)頁。當(dāng)大量客戶同時(shí)對(duì)應(yīng)用系統(tǒng)進(jìn)行請(qǐng)求時(shí),就可能導(dǎo)致客戶數(shù)據(jù)網(wǎng)頁發(fā)送時(shí)間減慢,甚至引起系統(tǒng)崩潰。為解決這種情況,這里提出一種動(dòng)態(tài)控制客戶數(shù)據(jù)主頁的發(fā)送方法。
動(dòng)態(tài)控制客戶數(shù)據(jù)主頁的發(fā)送主要是根據(jù)單位時(shí)間內(nèi)客戶請(qǐng)求的數(shù)量,動(dòng)態(tài)改變客戶數(shù)據(jù)主頁的刷新頻率。當(dāng)單位時(shí)間內(nèi)客戶請(qǐng)求的數(shù)量大于某一門限值時(shí),就降低客戶數(shù)據(jù)主頁刷新頻率;反之,就增加客戶數(shù)據(jù)主頁刷新頻率;這樣保證單位時(shí)間內(nèi)客戶請(qǐng)求數(shù)量在一定可允許的范圍內(nèi)。對(duì)于實(shí)時(shí)性要求較高的客戶,不降低刷新頻率。
假定單位時(shí)間內(nèi)允許客戶請(qǐng)求為N,實(shí)時(shí)性要求較高的客戶數(shù)量為n1,刷新頻率為f1, 其它客戶數(shù)量為n2,刷新頻率為f2,則:
隨著Internet的不斷發(fā)展,在應(yīng)用系統(tǒng)中嵌入WWW服務(wù)功能具有廣闊的應(yīng)用前景。一方面增強(qiáng)了應(yīng)用系統(tǒng)的網(wǎng)絡(luò)功能,在客戶不用下載專門的客戶端應(yīng)用程序情況下,就可以通過Web瀏覽器直接對(duì)應(yīng)用系統(tǒng)中的實(shí)時(shí)數(shù)據(jù)信息進(jìn)行訪問,實(shí)現(xiàn)對(duì)應(yīng)用系統(tǒng)的遠(yuǎn)程控制;另一方面可以廣泛應(yīng)用于具有微處理器和存儲(chǔ)器的家用電器、設(shè)備儀器之中,在它們的處理系統(tǒng)中嵌入WWW服務(wù)功能,通過有線、無線等數(shù)據(jù)傳輸技術(shù),利用Web瀏覽器遠(yuǎn)程監(jiān)視、控制這些家用電器和儀器設(shè)備的狀態(tài)。