基于嵌入式Linux的遠程監控系統的設計
3.2 應用程序設計
3.2.1 C/S(Client/Server)模式與B/S(Browser/Server)模式傳統的C/S模式采用兩層設計,客戶(hù)應用層負責提供交互界面,實(shí)現應用邏輯以發(fā)送數據、請求并處理返回數據;數據庫服務(wù)器層負責處理客戶(hù)數據請求并返回結果,有效管理系統資源。該模式需獨立開(kāi)發(fā)和安裝每個(gè)應用,系統升級維護困難,客戶(hù)機負擔重。此外,與數據庫的直接交互導致應用程序對數據結構有很強的依賴(lài)性,且浪費數據庫連接資源。
基于二層結構的C/S模式無(wú)法適應Internet網(wǎng)絡(luò )的特性,因此出現了一種新的體系結構——B/S模式。B/S是一種基于Hyperlink,HTML,Java的三級或多級C/S,客戶(hù)端僅需要單一的瀏覽器軟件,其它大量工作都由Web Sever完成。B/S模式使用簡(jiǎn)單、易于維護、擴展性好,已逐漸成為主流。
3.2.2 客戶(hù)端工作過(guò)程
該系統使用的是B/S模式,對客戶(hù)端幾乎沒(méi)有特別要求??蛻?hù)端只要基于普通Windows視窗系統,安裝IE或Netscape即可。換句話(huà)說(shuō),任何一臺上網(wǎng)的計算機,都可能成為客戶(hù)端。
客戶(hù)端的工作過(guò)程如下:通過(guò)Internet/Intranet網(wǎng)絡(luò )訪(fǎng)問(wèn)監控中心的主頁(yè),根據需要輸入用戶(hù)名和密碼,檢驗成功則進(jìn)入Web Server系統的監控界面,點(diǎn)擊相應的設備按鈕可以獲得該設備的運行狀態(tài)并可以對設備的參數進(jìn)行設置。
3.2.3 服務(wù)器端程序的設計
?。?)服務(wù)器模式
為了進(jìn)行服務(wù)器端程序的設計,首先要確定服務(wù)器的工作模型。我們知道,Linux系統網(wǎng)絡(luò )服務(wù)器主要分為兩種:循環(huán)服務(wù)器(Iterative Server)和并發(fā)服務(wù)器(ConcurrentServer)。循環(huán)服務(wù)器在同一時(shí)刻只能處理一個(gè)客戶(hù)機請求,而并發(fā)服務(wù)器在同一時(shí)刻可以處理多個(gè)客戶(hù)機請求。TCP套接字大多采用并發(fā)服務(wù)器提供服務(wù)。TCP并發(fā)服務(wù)器有多種實(shí)現方法:
·服務(wù)器對每個(gè)接收到的客戶(hù)連接都創(chuàng )建一個(gè)新的子進(jìn)程來(lái)處理客戶(hù)請求;
·服務(wù)器預先創(chuàng )建多個(gè)子進(jìn)程,由這些子進(jìn)程處理客戶(hù)機的請求。這種方式稱(chēng)為“預創(chuàng )建(prefork)”服務(wù)器;
·服務(wù)器用函數select實(shí)現對多個(gè)客戶(hù)機連接的多路復用;
·由超級服務(wù)器(Inetd)激活的服務(wù)器。
其中,一個(gè)子進(jìn)程對應一個(gè)客戶(hù)機的服務(wù)器模型很簡(jiǎn)單,父進(jìn)程完成接收連接和創(chuàng )建子進(jìn)程的任務(wù),子進(jìn)程處理客戶(hù)機的具體請求,每個(gè)子進(jìn)程的處理過(guò)程完全獨立。
這種服務(wù)器可以同時(shí)處理的客戶(hù)機數目受到系統所允許的最大子進(jìn)程數目的限制。這種服務(wù)器的缺點(diǎn)是,為每一個(gè)客戶(hù)創(chuàng )建一個(gè)子進(jìn)程的開(kāi)銷(xiāo)比較大。但如果我們能考慮到實(shí)際情況,并加以適當的變化,就會(huì )發(fā)現,它很適合我們的系統。首先,該系統是一個(gè)監控系統,決定了不會(huì )有過(guò)多客戶(hù)同時(shí)發(fā)出監控命令,所以無(wú)須擔心出現系統資源被耗盡的情況;其次,客戶(hù)一旦進(jìn)行監控,一般會(huì )持續較長(cháng)時(shí)間,這種創(chuàng )建子進(jìn)程的開(kāi)銷(xiāo)對服務(wù)器效率影響不大;最后,如果系統在Internet上運行,可能會(huì )有許多外來(lái)的好奇者想進(jìn)入,為了減少開(kāi)銷(xiāo),在系統設計中,并不是一旦建立連接就創(chuàng )建子進(jìn)程,而是當口令通過(guò)后并向系統發(fā)出ASP請求才建立子進(jìn)程。
?。?)程序設計
根據我們的方案,服務(wù)器所需做的工作是:通過(guò)串口對設備進(jìn)行數據的收發(fā);對數據進(jìn)行處理;將處理的數據交給Web Server子進(jìn)程;子進(jìn)程將數據顯示到Web頁(yè)下傳給客戶(hù),并接收客戶(hù)的參數設置命令,將參數設置上傳到遠程設備。
服務(wù)器程序結構如圖4所示,父進(jìn)程首先創(chuàng )建一個(gè)子進(jìn)程專(zhuān)門(mén)處理數據,然后再根據用戶(hù)的請求創(chuàng )建相對應的子進(jìn)程。用戶(hù)子進(jìn)程與串口數據處理子進(jìn)程之間采用進(jìn)程間通信來(lái)實(shí)現數據交換。
服務(wù)器啟動(dòng)之后的第一件事,就是創(chuàng )建專(zhuān)用子進(jìn)程來(lái)收發(fā)數據。服務(wù)器任何時(shí)刻都在*用戶(hù)請求。若用戶(hù)發(fā)出監控請求,而且通過(guò)了密碼校驗,服務(wù)器就會(huì )產(chǎn)生一個(gè)子進(jìn)程來(lái)處理該用戶(hù)的請求:發(fā)送數據,接收設置等。
4 結束語(yǔ)
身處信息社會(huì ),人們已經(jīng)能夠利用網(wǎng)絡(luò )資源快捷方便地獲得信息,并能利用網(wǎng)絡(luò )資源進(jìn)行各種設備的遠程監控。本文提出的基于嵌入式Linux的遠程監控系統的方案已在小型局域網(wǎng)中得到實(shí)現。該系統在工業(yè)現場(chǎng)、遠程診斷、信息家電中有著(zhù)很好的應用前景
參考文獻:
[1].RS232datasheethttp://www.dzsc.com/datasheet/RS232_585128.html.
[2].RS485datasheethttp://www.dzsc.com/datasheet/RS485_585289.html.
評論