摘要:針對基于B/S模式的煤礦安全生產監控系統響應速度慢、用戶等待時間長等問題,本文闡述了Ajax技術并將其引入到煤礦安全生產監控系統中,Ajax技術將瀏覽器端和服務器端傳統的同步交互通信方式改變為異步交互通信方式, 從而減輕了服務器負擔、提高了系統的響應速度、增強了煤礦安全生產實時監控的能力。
關鍵詞:B/S模式;煤礦安全;Ajax;異步交互
中圖分類號:TP3文獻標識碼:A 文章編號:1009-3044(2010)21-5869-03
Ajax Application in the Coal Mine Safety Monitoring System based on B/S Mode
ZHUANG Li-yun1, YU Guo-fang2
(1.Instiute of Electronics and Electronical Engineering, Huaian Institute of Technology, Huai'an 223003, China; 2.College of Information and Electronic Engineering, China University of Mining and Technology, Xuzhou 221008, China)
Abstract: Contraposing the problem such as lower response speed and longer user's waiting time of the coal mine safety monitoring system based on B/S mode,this article introduces Ajax technology which is also introduced into coal mine safety monitoring system. By using ajax technology, the synchronization messages can be changed to asynchronous messages, thus the server's load can be released, the system's response speed can be improved and real-time monitoring capacity of coal mine safety can be enhanced.
Key words: B/S mode; coal mine safety; Ajax; asynchronous
目前煤礦安全生產監控系統普遍采用的網絡結構是 FCS 和 DCS,FCS 與 DCS 結構的監控系統具有相對的獨立性和封閉性,監控系統之間容易形成了“信息孤島”, 不利于監測信息的共享,隨著煤礦信息化建設的發展,很多煤礦都建立了自己的局域網并且連接到Internet,因此開發基于Internet的B/S 結構的遠程實時監控系統具有非常重要的意義。
基于B/S 模式的煤礦安全生產監控系統可以使用戶通過Internet隨時監測煤礦安全生產信息,但煤礦安全生產監測數據量較大,而且需要實時更新的數據量大,進而導致了客戶端瀏覽器刷新頻率較高、網絡傳輸速度的下降,從而使得煤礦安全生產監測的效率下降。將Ajax引入監測系統 ,可以實現頁面的粒狀更新,避免頁面刷新時出現“白屏”現象,提高了其響應速度,增強了其交互能力,提高了煤礦安全生產實時監控的能力。
1 Ajax
Ajax是一種創建交互式網頁應用的網頁開發技術,全稱為“Asynchronous JavaScript and XML”,其核心是JavaScript對象XMLHttpRequest[,它是一種支持異步請求的技術,XMLHttpRequest可以使用JavaScript向服務器提出請求并處理響應。
Ajax體系結構比傳統的Web體系結多了一個Ajax引擎,安裝在瀏覽器客戶端中,在接受到用戶界面傳來的JavaScript調用后,發送請求到服務器,Ajax來完成用戶界面上的粒狀更新,縮短了用戶界面和服務器的交互過程的時間,提高了效率。
Ajax引擎可以實現瀏覽器和服務器信息交互的異步化。一方面,通過JavaScript腳本編程語言靈活地處理各種用戶請求,并利用DOM和CSS完成用戶界面的動態和格式化顯示;另一方面,在無需刷新和重載瀏覽器頁面的前提下,通過JavaScrip,利用XMLHttpRequest對象與服務器進行線路化的數據交換,如圖1所示。
Ajax結構體系有以下優點:
1) 中間層引擎承擔了一部分服務器處理數據的工作,可以減輕用戶請求造成的網絡服務器的負擔;
2) 客戶端與服務器端異步交互的特點使得頁面更新無需重載,大大縮短了用戶等待時間,提高了數據更新的效率;
3) JavaScript、XMLHttpRequest等已經被瀏覽器廣泛支持,其通用性大大提高。
2 Ajax在煤礦安全生產監控系統中的應用及實現
2.1 開發平臺
系統開發過程中,操作系統采用Windows Server 2003,開發工具采用Visual Studio.NET 2008,數據庫則采用SQL Server 2005。
2.2 具體實現
在具體的程序實現過程中綜合運用了Ajax技術以及ASP.NET技術來實現煤礦安全生產監控數據的動態刷新。一個完整的Ajax執行步驟如圖2所示。
本系統采用XmlHttpRequest對象的responseXML 屬性來返回煤礦安全生產數據信息,下文給出了煤礦安全生產數據信息粒狀更新的實現過程:
1) 初始化XMLHttpRequest對象。
在本系統中,采用asp.net環境下的C#語言創建XMLHttpRequest代碼如下:
function queryinfo(){
var xmlhttp;
try{
xmlhttp= new ActiveXObject('Msxml2.XMLHTTP');
}
catch(e)
{
try{
xmlhttp= new ActiveXObject('Microsoft.XMLHTTP');
}
catch(e)
{
try{
xmlhttp= new XMLHttpRequest();
}catch(e){}
}
}
2) 指定響應處理函數。
將相應的處理函數名稱賦給XMLHttpReques對象onReadyStateChange屬性。實現關鍵代碼:
xmlhttp.onReadyStateChange=processRequest;
3) 發送HTTP請求,指定了響應處理函數后,便可以向服務器發出HTTP請求了。
這一步調用XMLHttpRequest對象的open() 和send()方法:
xmlhttp.open(\"post\",\"url?參數1 =\"+值1+\"參數2 =\"+值2..... +\"參數n =\"+值n.;
xmlhttp.send(1);
4) 處理服務器返回的信息。
首先,要檢查XMLHttpRequest對象的readyState值,判斷請求目前的狀態。readyState值為4的時候,代表服務器已經傳回所有的信息,可以處理并更新頁面內容了。
if(xmlhttp.readyState= =4){
//信息已經返回,可以開始處理
} else
{
//信息還沒有返回,等待
}
if(xmlhttp.status= =200){
//頁面正常,可以開始處理
} else
{
//頁面有問題
}
5) 實現數據查詢頁面的粒狀更新
本系統采用XmlHttpRequest對象的responseXML 屬性來返回煤礦安全生產數據,因此,在客戶端接收到的參數是XML文檔對象,調用fillTable(xmlobj)方法,該方法首先獲得服務器端返回的XML文檔對象的節點,之后創建表格對象,然后用for語句動態產生單元格,緊接著再來逐次填充表格中的每一個
//獲取xml對象
varxmlobj = xmlhttp.responseXML;
var66data=xmlobj.getElementsByTag-Name(\"data\");
vardatalen = data . ChildNodes();
//創建表格對象
var–table=document.createElement(\"table\");
// 動態產生并填充單元格
for(var i = 0;i < data.length;i++)
{
var-tr = -table.insertRow(i);
for(var j = 0;j< datalen;j++)
{
var -td = -tr.insertCell(j);
-tn=data[i].ChildNode(j).NodeValue;
-td.appendChild(-tn);
}
}
煤礦安全生產監控系統歷史數據查詢網頁粒狀更新界面如圖3所示。
3 結束語
在基于B/S 模式下的煤礦安全生產監控系統中,由于在一個頁面上需要監控的數據較多,安全生產數據更新頻率高,如果使用傳統的全屏刷新方式更新數據,不僅不利于用戶的監控,還給服務器造成了較大的壓力,系統效率低下而且也不穩定。將Ajax技術引入到煤礦安全生產監控系統中,可以很方便地解決這些問題,既調高了用戶的監控的效率,也使得系統的穩定性得到提高,該技術已經在兗礦集團興隆莊煤礦投入使用,效果良好。
參考文獻:
[1] 耿濤,宋宜梅,向家偉,韋星,植海深.基于OSA-CBM煤礦機械故障診斷系統的設計與研究[J].煤礦機械,2008(5):12-15.
[2] 賈宗璞,葳鵬,賈祥芝.多媒體礦井監控系統的WEB發布[J].工礦自動化,2004(6):23-25.
[3] Ryan Asleson,Nathaniel T.Schutta,金靈譯.Ajax基礎教程[M].北京:人民郵電出版社,2006.
[4] 陽鋒,徐建波.AJAX的性能改進研究[J].計算機工程與科學,2008(6):146-148.
[5] 雷濤,尚盈,王昌.基于Ajax的實時綜合監測系統的設計及其性能優化[J].計算機與信息技術,2009(9):21-24.
[6] 鄧璐娟,張科德,丁孟寶.基于Ajax的溫室遠程監控系統的設計與實現[J].鄭州輕工業學院學報,2008(12):50-53.
注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文