于述春 林 晶
(懷化學院計算機工程系 湖南 懷化 418000)
?
智能終端與Web通信的可擴展性優化
于述春 林 晶
(懷化學院計算機工程系 湖南 懷化 418000)
在基于Web的遠程智能水務管理系統中,Web服務器與遠程智能水表的通信問題可能會影響系統的可擴展性。為此,提出利用Windows消息隊列作為在Web服務器與遠程智能水表之間進行通信的中間渠道,它們間的通信采用異步頁面技術。實驗結果表明,系統可擴展性有較大改善。
Windows消息隊列 遠程智能水表 可擴展性
基于GPRS+工業網絡對遠程智能水表的數據采集已經有許多研究[2-7],他們所采用的軟件平臺大多基于C/S模式,對于目前不支持TCP/IP協議通信的智能終端,它采用基于GPRS+工業網絡的通信方式,如何將他們集成到Web系統有很現實的意義。
在GPRS+工業網絡的組網方式下,每個智能終端分配有一個物理地址,通過RS485連接到DTU,每個DTU也有自己的一個GSM下的地址。
客戶機與智能終端進行通信完成一次請求的標準處理過程如下所示:
客戶機發起請求;
服務器接收請求;
服務器組裝命令串;
服務器向設備發送命令串;
服務器接收設備返回數據;
服務器生成響應返回給客戶機。
在“服務器向設備發送命令串”與“服務器接收設備返回數據”之間,可能會因為設備所處環境問題,導致較大的通信時延(可能會有十幾秒,如果經過大約15秒,還未收到數據,認為設備沒有返回數據或通信異常)。在整個Web系統訪問量不大時,這只會使每個訪問請求的響應延遲,但系統的可擴展性一定不好。
系統中除了需要與智能終端進行通信的Web請求外,還存在其他不需要與智能終端進行通信的Web請求,可擴展性差會影響這類請求的延遲。因此,我們需要對那些需要與智能終端進行通信的Web請求進行特殊處理,以優化那些不需要與智能終端進行通信的Web請求處理的響應時間。
在Web客戶端與智能終端的Web請求處理與響應過程中,客戶端與Web服務器通信采用同步方式,Web服務器與智能終端的通信采用異步方式。
在這種方式中,客戶請求被Web服務器線程池中的一個線程所接收,在需要與智能終端通信時,調用異步方法,使用ASP.NET的異步頁面技術,釋放剛才那個線程回到線程池;在等待智能終端返回數據的過程中,沒有線程被阻塞;在智能終端返回數據時,再從線程池中調度另一個線程進行后續處理,從而使系統具有更好的可擴展性。
2.1 消息隊列
Web服務器與遠程智能水表間的通信采用異步方式,可通過幾種不同途徑來實現。由于第三方提供的通信接口未提供異步實現方式,因此,常規的C#中的BeginXXX異步方法無法在這里采用。因此,需要有某種可為多個進程或線程訪問的緩沖方式來暫存待發送的數據以及所接收到的數據。我們選擇消息隊列[11]作為緩沖,由相關進程進行操作。發送命令和接收響應消息的兩個線程放在一個Windows服務中,如圖1所示。

圖1 用消息隊列實現的異步通信框架圖
整個異步通信方式的架構如下:
Windows服務中的接收線程對接收到的消息進行第一步的檢查,只有那些經本系統的無線訪問點返回的消息才寫入接收消息隊列。
Web頁面檢查從接收消息隊列中收到的消息,確定是否為本頁面所期望的響應消息。由于可能會同時存在多個Web頁面從接收消息隊列中接收,因此,在Web服務器中建立一個hashtable,存放所有從接收消息隊列中收到的消息,這可在global.asax中定義。
2.2 異步Web頁面技術及數據的收發
異步頁面技術的基本思想是:在Web頁面的Page_Load事件中通過調用頁面的AddOnPreRenderCompleteAsync()方法來設置異步處理的BeginXXX和EndXXX方法。Web服務器中處理客戶請求的線程在調用BeginXXX方法后會立即返回,并返回一個IAsyncResult對象,在這個BeginXXX方法中可設置一個回調函數。在回調函數中調用EndXXX方法,這樣這個處理客戶請求的線程會立即返回線程池中,繼續為其他客戶請求服務;在異步處理結束后,再由另外一個線程來接收數據,更新頁面。
從頁面生命周期來看,同步頁面與異步頁面的區別如圖2所示。

圖2 同步頁面與異步頁面中的線程
其中,同步頁面中一個IIS線程池中的線程負責從接收請求到向客戶發送響應的全過程。如果在請求處理中有費時間的I/O操作,那么,整個線程將被阻塞在I/O操作;異步頁面中,一個IIS線程池中的線程負責接收請求,到PreRender為止的上部過程,中間調用異步操作,此時線程thread1返回線程池,準備為其他客戶服務;在異步操作返回后,再由線程池中的另一個線程thread2負責下部的處理,從而將線程從等待I/O操作中解放出來。
在那些需要與遠程智能水表通信以完成Web請求處理的頁面中,我們采用異步頁面技術。
2.3 啟動消息隊列的Windows服務
與智能終端通信的Windows服務的功能包括:創建兩個消息隊列,一個用于暫存命令串的發送,即發送消息隊列,另一個用于暫存返回數據的接收,即接收消息隊列;同時啟動兩個線程,一個線程專門負責監聽發送消息隊列,有消息時即讀取消息,并將消息命令串通過調用通信接口發送到智能終端;另一個線程專門負責接收智能終端返回的數據,并將那些屬于本系統的智能終端返回的數據組成一個接收消息放置到接收消息隊列中。Windows服務設置為開機自動啟動運行。
實驗環境:硬件采用雙核CPU、內存2 GB的PC機,操作系統為Windows XP,安裝Windows 消息隊列組件。Windows服務和Web系統部署于同一臺PC機上,所創建的消息隊列也位于該PC機,Web服務器為IIS6.0,并將同步頁面部署在配置完全相同的PC機上。
測試時,將Web服務器部署在該機器的IIS上,用另兩臺PC機作為測試機,通過腳本方式發起測試請求,一部分請求是與遠程智能水表有關的,另一部分是與它無關的,然后計算平均響應時間,如圖3所示。

圖3 異步與同步處理的響應時間
結果表明:在訪問量少時,同步響應時間比異步響應時間要小,但隨著訪問量的增加,同步響應時間急劇增大,而異步響應時間則小于同步響應時間。
可擴展性與系統可容納的并發訪問量有關,在同步方式下,隨著總的訪問量的增加,其響應時間也急劇增加。因此在并發訪問量達到某個度后,同步方式下對于更多的并發訪問將無法給予響應,而異步方式下卻可給予雖然較慢但仍可接受的響應。
隨著物聯網的發展,將會有越來越多的智能終端通過Web技術進行訪問[13-15]。當訪問Web服務器的用戶數增加時,Web服務器的性能將成為一個瓶頸。為改善Web服務器的性能,本文提出基于異步頁面和消息隊列構建的Web和遠程智能水表的通信的技術。當系統訪問量增加時,可以將Web服務器與Windows服務分別部署在兩臺機器上,消息隊列在Web服務器所在機器上。付出的代價是Windows服務訪問消息隊列需要通過網絡進行。只要保證消息隊列在Web服務器所在網段,且發送消息隊列與接收消息隊列都是唯一的,那么,系統可具有較大的可擴展性。
在頁面向智能終端發送命令時,可通過在準備接收消息時設置一個超時值,可在某個時間內知道發送是否成功。如果對于每個消息,設置一個最大發送次數,且只有在接收到此消息的返回時才從發送消息隊列中刪除相應消息,還可處理因外界因素導致智能終端通信臨時異常的情況。
[1] Guinard D,Trifa V,Mattern F,et al.From the Internet of Things to the Web of Things:Resource-oriented Architecture and Best Practices[J].Architecting the Internet of Things.Springer,2011:97-129.
[2] 隨慧斌.基于移動通訊技術的電力遠程抄表系統[C]//第16屆中國過程控制學術年會暨第4屆全國故障診斷與安全性學術會議論文集.中國濟南,2005.
[3] 韓曉萍,邵宏強,李佰國.GPRS技術在電力遠程抄表系統中的應用[J].電子測量與儀器學報,2005,19(4):81-84.
[4] 張平澤,趙振勇.遠程抄表系統通信技術的應用研究[J].電工電氣,2010(1):39-43.
[5] 陶永明.遠程抄表系統中各種數據通信方式的原理及應用研究[J].通信電源技術,2007(4):24-27.
[6] 李淑娟.集中式電能表及其遠程抄表系統設計[D].青島:青島大學,2007.
[7] 尹秀艷.基于GPRS的遠程自動抄表中管理軟件系統的設計與實現[D].河北:華北電力大學,2006.
[8] 喬志磊.Web異步通信系統的研究與實現[J].儀器儀表用戶,2007,14(2):23-24.
[9] 夏卓群,朱樹人,彭妮.基于事件驅動和異步通信體系結構的Web服務器設計[J].長沙電力學院學報:自然科學版,2005,20(1):49-51.
[10] 趙曉峰.基于消息隊列的Web應用異步通信的設計與實現[J].廊坊師范學院學報:自然科學版,2011,11(6):36-38.
[11] Anupamkundu.How to do asynchronous programming using ASP.NET,MSMQ and Windows Service,for long running processes[EB/OL].http://www.codeproject.com/Articles/8809/How-to-do-asynchronous-programming-using-ASP-NET-M.
[12] Jeff Prosise.Wicked Code:Asynchronous Pages in ASP.NET 2.0[OL].MSDN.http://msdn.microsoft.com/en-us/magazine/cc163725.aspx.
[13] Wu Z,It?l? T,Tang T,et al.A Web-based two-layered integration framework for smart devices[J].Eurasip Journal on Wireless Communications and Networking,2012(3):1-12.
[14] Vasscur J P,Dunkels A.Interconnecting Smart Objects with IP:The Next Internet[M].Morgan Kaufmann Publishers,2010.
[15] Colitti W,Steenhaut K,Caro N D.Integrating Wireless Sensor Networks with the Web[C]//Proceedings of Workshop on Extending the Internet to Low Power & Lossy Networks,2010.
SCALABLE OPTIMISATION FOR COMMUNICATION BETWEEN INTELLIGENT TERMINAL AND WEB
Yu Shuchun Lin Jin
(Department of Computer Science and Engineering,Huaihua University,Huaihua 418000,Hunan,China)
In Web-based remote intelligent water supplies management systems,the problem in communication between Web server and remote intelligent device may affect system’s scalability.Therefore we proposed the solution,it uses Windows message queue as the middle channel of the communication between Web server and remote intelligent water meter,and the asynchronous page technique is employed in the communication between them.Experimental result showed that system’s scalability has been greatly improved.
Windows message queue Remote intelligent water meter Scalability
2015-10-16。湖南省科技項目計劃(2014KP0083)。于述春,講師,主研領域:計算機網絡,計算機視覺。林晶,高工。
TP39
A
10.3969/j.issn.1000-386x.2016.11.075