王仁麗+王倩



摘要:通過與傳統Web應用程序模型對比,闡述了AjaX技術的基本原理和關鍵技術,給出了應用實例:基于一個手勢識別系統,采用Python腳本搭建Web服務器,實現并分析AjaX技術在其Web端數據的定時自動刷新效果。實驗結果表明,AjaX的應用減少了用戶等待的時間和服務器的壓力,獲得了良好的系統性能和用戶體驗。
關鍵詞:AjaX;Web應用;自動刷新;Python
引言
隨著互聯網變得更加成熟,具有響應性的用戶界面和交互功能豐富的web應用已經變得越來越流行,用戶對于Web應用也提出了更高的要求。但傳統的web應用采用的是同步交互過程,如圖1。服務器在處理請求時用戶只能等待,此時瀏覽器顯示的頁面是空白或無響應狀態,大大降低了用戶體驗。直到2005年AjaX的出現。它采用異步交互方式,在用戶和服務器之間引入了一個中間媒介,改變了同步交互過程中的“處理-等待-處理-等待”模式。使得Web頁面不用打斷交互流程進行重新加裁,就可以動態地更新。因此,AjaX技術被廣泛應用在電子商務、環保監控系統、網絡考試系統、校友會網絡系統平臺等其他各個領域中。
1AjaX工作原理
AjaX是使用客戶端腳本與Web服務器交換數據的Web應用開發方法。AjaX引擎允許用異步的方式實現用戶與程序的交互,構建基于Java技術的Web應用,打破了使用頁面重載的慣例。
AjaX的工作原理就是在瀏覽器和服務器之間加了一個中間層,使用戶操作與服務器響應異步化。AjaX引擎通過調用XMLHttpRequest對象的屬性和方法來與服務器端進行數據交互,然后再通過DOM來解析處理XML文檔和部分更新HTML頁面的內容。圖2描述了異步Ajax操作的流程。
如圖2,當用戶通過瀏覽器提交請求時,請求數據將發送給AjaX引擎。AjaX引擎捕獲用戶輸入的請求數據然后再向服務器發送請求,此時,瀏覽器不用等待服務器的響應,用戶可以繼續輸入數據。服務器處理完用戶請求之后,返回處理結果并改變HTTP就緒狀態,一旦HTTP的就緒狀態發生改變,AjaX引擎就會調用相對應的回調函數來接收這些處理結果并將它們更新到頁面的指定部分,瀏覽器無需刷新整個頁面就能更新頁面的部分內容,使得用戶感覺應用程序是立即完成的。
AjaX包括以下五個關鍵技術:
(1)可擴展標記語言(XML):XMLHttpRequest對象可以選擇使用XML作為與服務器端通信的數據格式。
(2)XMLHttpRequest對象:負責向服務器發送請求并對服務器的響應加以處理。通過與DOM和CSS的結合,就可以實現局部刷新的效果。
(3)文檔對象模型(DOM):DOM用來表示顯示在瀏覽器上的整個文檔對象及其層次結構。
(4)級聯樣式表技術(CSS):可代替JavaSeript來控制外觀。
(5)JavaSeript腳本語言:使DOM、XHTML、XML和CSS可以相互協作,并控制它們的行為。
2 AjaX技術應用于手勢識別系統
我們將在一個艦載機手勢識別系統中,實現分類數據在Web頁面上的定時自動刷新。
2.1系統簡介
系統實現對十類靜態手勢指令的識別,接收從服務器端傳來的分類數據并顯示在Web端,并以3秒/次的頻率自動刷新。同時根據分類數據驅動Web頁面上的三維動畫模型,真實表現出在不同手勢指令下艦載機的不同狀態。
2.2服務器搭建
由于Python具有非常簡捷而清晰的語法特點,適合完成各種高層任務,幾乎可以在所有的操作系統中運行,相比于其他編程語言也更易于理解。將采用Python腳本語言搭建Web服務器。
網絡通信的基本接口是socket,它擴展了操作系統的基本I/O到網絡通信,用來確定本地和遠程端點的IP地址和端口號。采用socket接口來建立TCP連接。
服務器連接過程分為準備連接和接收連接:
2.3AjaX框架設計
AjaX應用的特點之一就是無需刷新頁面即可向服務器傳輸或讀寫數據,主要由XMLHttpRequest對象來實現。XMLHttpRequest用于在后臺與服務器交換數據,可以在不重新加載整個網頁的情況下,對網頁的某部分進行更新。
創建XMLHttpRequst對象并向服務器發送請求過程如下:
2.4結果分析
系統實現平臺為Linux操作系統,其中PY文件用于搭建系統服務器;.html用于實現數據自動刷新;分類數據存放在txt文件中用以傳輸顯示,數據刷新周期為3s。內容意義如下:
內容包括代理用戶的操作系統為linux、使用的瀏覽器為FireFox及接收的格式,語言,連接狀態等。
實驗結果表明,Ajax技術能夠實現本系統定時刷新數據的需求,完成了每3s刷新一次數據的任務。
3總結
Ajax不是一種技術,而是將多種技術結合應用。它減少了不必要的數據傳輸,實現了“按需取數據”的理念,盡可能減少了冗余請求,從而減少了用戶等待的時間和服務器的壓力。通過在艦載機手勢識別系統中的應用,使得Web端展示的分類數據不需要一遍遍刷新頁面而加大用戶等待的時間,從而大大改善了系統性能,獲得了良好的用戶體驗。