鄭州大學遠程教育學院網絡管理中心 黃喜民
Web2.0與Ajax技術解析
鄭州大學遠程教育學院網絡管理中心 黃喜民

近來很多成功的Web應用都有一個共同特點,就是依賴于大量用戶來豐富其內容,這種特點被稱為Web2.0。伴隨著Web2.0的出現,一種新型的Web應用程序也很快地流行起來,這就是Ajax應用程序,這種應用程序通過對服務器的異步請求調用,極大地改善了Web的響應速度和用戶的交互體驗。
Web2.0是2003年之后互聯網的熱門概念之一,目前對什么是Web2.0并沒有一個很嚴格的定義。一般來說Web2.0是相對Web1.0(2003年以前的互聯網模式)的新一類互聯網應用的統稱。根據Wiki定義:Web2.0是網絡運用的新時代,網絡成為了新的平臺,內容因為每位使用者的參與(Participation)而產生,參與所產生的個人化(Personalization)內容,借由人與人(P2P)的分享(Share),形成了現在Web2.0的世界。從這個定義我們可以看出,Web2.0并不是一個具體的事物,而是一個階段,是促成這個階段的各種技術和相關的產品與服務的一個總稱。
與Web1.0相比較,Web1.0的主要特點在于用戶通過瀏覽器獲取信息,而Web2.0則更注重用戶的交互作用,用戶既是網站內容的消費者(瀏覽者),也是網站內容的制造者。Web2.0與Web1.0的比較見表1。

表1 Web2.0與Web1.0的比較
從表1中可以看出,Web2.0相對于Web1.0而言,是一次從外部應用到核心內容的變化,具體地說,從模式上是單純的“讀”向“寫”和“共同建設”發展;從主要構成單元上是由“網頁”向“發表/記錄的信息”發展;從工具上是由網頁瀏覽器向各類瀏覽器、RSS閱讀器等內容發展;從體系結構上由ClientServer(客戶端/服務器)向WebServices(Web服務)的轉變;內容創建者由程序員等專業人士向全部普通用戶發展;主導者將由少數人向大量業余人士發展。
Ajax是AsynchronousJavaScriptandXML的縮寫,即異步的JavaScript和XML。通俗地說就是客戶端請求通過異步調用服務器數據,實現頁面無刷新操作的技術。Ajax正是實現前面所說的Web2.0的核心技術,借助Ajax可以將笨拙的Web界面轉化成強交互性的Ajax應用程序。
在傳統的Web應用程序模型中,瀏覽器負責初始化向服務器的請求,以及處理來自服務器的響應,而Ajax模型則不同,它提供了一個中間層——Ajax引擎——來處理這種通信。Ajax引擎(AjaxEngine)實際上只是一個JavaScript對象或函數,其核心是XMLHttpRequest對象,只有當信息必須從服務器上獲得的時候才調用它。而且Ajax引擎向服務器發出的HTTP請求都是異步完成的,不必等收到響應后就可以繼續執行后續的代碼。
服務器將配置為向Ajax引擎返回其可用的數據,這些數據可以是純文本、XML或者需要的任何格式,唯一的要求就是Ajax引擎能夠理解和翻譯這些數據。當Ajax引擎收到服務器響應時,將會觸發一些操作,通常是完成數據解析,以及基于所提供的數據對用戶界面做一些修改。由于這個過程中傳送的信息比傳統的Web應用程序要少得多,因此用戶界面的更新速度將很快,用戶也能夠更快地進行他們的工作。Ajax應用程序模型如圖1所示。

圖1 Ajax應用程序模型
從Ajax應用程序模型中可以看出,比起傳統的Web開發模式,Ajax向傳統桌面程序靠攏了很多,一個基于Ajax的Web頁面已經越來越趨向于一個單獨的應用程序。在Ajax應用中,每個Web頁面不一定僅對應一個服務器端頁面,而可能是由多個服務器端頁面共同協作完成的,同時,一個服務器端頁面又可以為多個客戶端頁面服務,這樣,每個服務器端頁面就可以將功能分得很細。通過Ajax引擎,客戶端頁面可以根據用戶需要來調用服務器端相應頁面,獲得數據并顯示在頁面上。此時大多數服務器端的頁面已經不再是界面表現的工具,而是作為提供數據的“接口”,一個Web頁可以從多個接口中獲取數據,并將它們更新在頁面中。
Ajax不是單一的技術,而是多種現有技術的綜合體現。
1.描述頁面的HTML/XHTML。Ajax使用HTML/XHTML描述文檔的結構,但僅用于描述Ajax頁面的初始樣式。在初始化之后,文檔結構可能會隨著程序的運行而有所變化。同時,HTML/XHTML還會告知瀏覽器下載將運行于客戶端的JavaScript以及定義頁面樣式的CSS等相關文件。
2.表示文檔結構的DOM。DOM(DocumentObjectModel)即文檔對象模型,是HTML和XML文檔的一個應用程序接口(API)。它提供了一種結構化的文檔表示方式,它把網頁、腳本和編程語言連接了起來。JavaScript可以訪問到當前頁面的DOM對象,并通過對其操作來間接地改變該頁面的內容及結構。
3.定義元素樣式的CSS。CSS(CascadingStyleSheet)即層疊樣式表,用來指定HTML文件中元素實現的樣式。通過使用CSS可將文檔的結構和表現完全分開,HTML部分可專注于定義文檔的結構,而控制樣式則交給CSS來處理。這樣極大地降低了DOM對象的復雜性,方便使用JavaScript對其進行維護。
4.表示服務器和客戶端通信內容的XML。XML(eXtensibleMarkupLanguage),是一種擴展性標識語言。在Ajax技術中,客戶端與服務器端交換的數據通常采用這種語言來描寫。由于XML是一種通用的標識語言,可以在不同的CGI程序中被讀取,提高了Web應用程序的可擴展性,從而可以把用Ajax技術開發的頁面程序綁定到不同平臺的服務器程序中。
5.實現與服務器異步通信的XMLHttpRequest對象。XMLHttpRequest對象,早在1998年就已經集成到了IE中了。隨后,在各種主流的瀏覽器中也陸續開始得到支持。XMLHttpRequest對象的強大之處在于,它允許開發者在JavaScript中以異步的方式向服務器發出HTTP請求并得到響應,用戶會有類似于桌面應用程序的動態、快速響應和高交互性的體驗。
6.協調上述各種技術的JavaScript。JavaScript將上面提到的所有技術黏合在一起。通過JavaScript代碼,開發者可以訪問并維護當前頁面的DOM對象,包括對其進行添加、刪除和修改等操作,還可以通過維護某個DOM元素的CSSClass來改變它的外觀樣式,也可以使用XMLHttpRequest對象訪問服務器的CGI程序,并將返回的XML或JSON類型的數據解析后應用到當前的計算或顯示中。
作為一種新的Web應用程序模型,Ajax是一項非常誘人的技術,但并不意味著它就是一項通用的技術,一些場合使用Ajax可以帶來很好的用戶體驗,而另外一些場合有可能給用戶的使用帶來災難。Ajax的優點是可以很方便地實現異步交互與動態刷新Web頁面,因此適用于用戶和服務器交互頻繁的場合。
作為Web2.0的主流應用技術,Ajax使瀏覽器可以為用戶提供更為自然的瀏覽體驗,同時Ajax使得Web應用既保留了B/S結構的優點,又具有C/S結構應用的強大功能和用戶感受。所以,可以認為,Ajax就是Web標準和Web應用的可用性理論的集大成者,它極大地改善了Web應用的可用性和用戶的交互體驗,最終得到了用戶和市場的廣泛認可,因此,Ajax技術在Web2.0時代的廣泛應用也是用戶和市場的共同選擇。