鄭州大學遠程教育學院網(wǎng)絡(luò)管理中心 黃喜民
Web2.0與Ajax技術(shù)解析
鄭州大學遠程教育學院網(wǎng)絡(luò)管理中心 黃喜民
近來很多成功的Web應(yīng)用都有一個共同特點,就是依賴于大量用戶來豐富其內(nèi)容,這種特點被稱為Web2.0。伴隨著Web2.0的出現(xiàn),一種新型的Web應(yīng)用程序也很快地流行起來,這就是Ajax應(yīng)用程序,這種應(yīng)用程序通過對服務(wù)器的異步請求調(diào)用,極大地改善了Web的響應(yīng)速度和用戶的交互體驗。
Web2.0是2003年之后互聯(lián)網(wǎng)的熱門概念之一,目前對什么是Web2.0并沒有一個很嚴格的定義。一般來說Web2.0是相對Web1.0(2003年以前的互聯(lián)網(wǎng)模式)的新一類互聯(lián)網(wǎng)應(yīng)用的統(tǒng)稱。根據(jù)Wiki定義:Web2.0是網(wǎng)絡(luò)運用的新時代,網(wǎng)絡(luò)成為了新的平臺,內(nèi)容因為每位使用者的參與(Participation)而產(chǎn)生,參與所產(chǎn)生的個人化(Personalization)內(nèi)容,借由人與人(P2P)的分享(Share),形成了現(xiàn)在Web2.0的世界。從這個定義我們可以看出,Web2.0并不是一個具體的事物,而是一個階段,是促成這個階段的各種技術(shù)和相關(guān)的產(chǎn)品與服務(wù)的一個總稱。
與Web1.0相比較,Web1.0的主要特點在于用戶通過瀏覽器獲取信息,而Web2.0則更注重用戶的交互作用,用戶既是網(wǎng)站內(nèi)容的消費者(瀏覽者),也是網(wǎng)站內(nèi)容的制造者。Web2.0與Web1.0的比較見表1。
表1 Web2.0與Web1.0的比較
從表1中可以看出,Web2.0相對于Web1.0而言,是一次從外部應(yīng)用到核心內(nèi)容的變化,具體地說,從模式上是單純的“讀”向“寫”和“共同建設(shè)”發(fā)展;從主要構(gòu)成單元上是由“網(wǎng)頁”向“發(fā)表/記錄的信息”發(fā)展;從工具上是由網(wǎng)頁瀏覽器向各類瀏覽器、RSS閱讀器等內(nèi)容發(fā)展;從體系結(jié)構(gòu)上由ClientServer(客戶端/服務(wù)器)向WebServices(Web服務(wù))的轉(zhuǎn)變;內(nèi)容創(chuàng)建者由程序員等專業(yè)人士向全部普通用戶發(fā)展;主導者將由少數(shù)人向大量業(yè)余人士發(fā)展。
Ajax是AsynchronousJavaScriptandXML的縮寫,即異步的JavaScript和XML。通俗地說就是客戶端請求通過異步調(diào)用服務(wù)器數(shù)據(jù),實現(xiàn)頁面無刷新操作的技術(shù)。Ajax正是實現(xiàn)前面所說的Web2.0的核心技術(shù),借助Ajax可以將笨拙的Web界面轉(zhuǎn)化成強交互性的Ajax應(yīng)用程序。
在傳統(tǒng)的Web應(yīng)用程序模型中,瀏覽器負責初始化向服務(wù)器的請求,以及處理來自服務(wù)器的響應(yīng),而Ajax模型則不同,它提供了一個中間層——Ajax引擎——來處理這種通信。Ajax引擎(AjaxEngine)實際上只是一個JavaScript對象或函數(shù),其核心是XMLHttpRequest對象,只有當信息必須從服務(wù)器上獲得的時候才調(diào)用它。而且Ajax引擎向服務(wù)器發(fā)出的HTTP請求都是異步完成的,不必等收到響應(yīng)后就可以繼續(xù)執(zhí)行后續(xù)的代碼。
服務(wù)器將配置為向Ajax引擎返回其可用的數(shù)據(jù),這些數(shù)據(jù)可以是純文本、XML或者需要的任何格式,唯一的要求就是Ajax引擎能夠理解和翻譯這些數(shù)據(jù)。當Ajax引擎收到服務(wù)器響應(yīng)時,將會觸發(fā)一些操作,通常是完成數(shù)據(jù)解析,以及基于所提供的數(shù)據(jù)對用戶界面做一些修改。由于這個過程中傳送的信息比傳統(tǒng)的Web應(yīng)用程序要少得多,因此用戶界面的更新速度將很快,用戶也能夠更快地進行他們的工作。Ajax應(yīng)用程序模型如圖1所示。
圖1 Ajax應(yīng)用程序模型
從Ajax應(yīng)用程序模型中可以看出,比起傳統(tǒng)的Web開發(fā)模式,Ajax向傳統(tǒng)桌面程序靠攏了很多,一個基于Ajax的Web頁面已經(jīng)越來越趨向于一個單獨的應(yīng)用程序。在Ajax應(yīng)用中,每個Web頁面不一定僅對應(yīng)一個服務(wù)器端頁面,而可能是由多個服務(wù)器端頁面共同協(xié)作完成的,同時,一個服務(wù)器端頁面又可以為多個客戶端頁面服務(wù),這樣,每個服務(wù)器端頁面就可以將功能分得很細。通過Ajax引擎,客戶端頁面可以根據(jù)用戶需要來調(diào)用服務(wù)器端相應(yīng)頁面,獲得數(shù)據(jù)并顯示在頁面上。此時大多數(shù)服務(wù)器端的頁面已經(jīng)不再是界面表現(xiàn)的工具,而是作為提供數(shù)據(jù)的“接口”,一個Web頁可以從多個接口中獲取數(shù)據(jù),并將它們更新在頁面中。
Ajax不是單一的技術(shù),而是多種現(xiàn)有技術(shù)的綜合體現(xiàn)。
1.描述頁面的HTML/XHTML。Ajax使用HTML/XHTML描述文檔的結(jié)構(gòu),但僅用于描述Ajax頁面的初始樣式。在初始化之后,文檔結(jié)構(gòu)可能會隨著程序的運行而有所變化。同時,HTML/XHTML還會告知瀏覽器下載將運行于客戶端的JavaScript以及定義頁面樣式的CSS等相關(guān)文件。
2.表示文檔結(jié)構(gòu)的DOM。DOM(DocumentObjectModel)即文檔對象模型,是HTML和XML文檔的一個應(yīng)用程序接口(API)。它提供了一種結(jié)構(gòu)化的文檔表示方式,它把網(wǎng)頁、腳本和編程語言連接了起來。JavaScript可以訪問到當前頁面的DOM對象,并通過對其操作來間接地改變該頁面的內(nèi)容及結(jié)構(gòu)。
3.定義元素樣式的CSS。CSS(CascadingStyleSheet)即層疊樣式表,用來指定HTML文件中元素實現(xiàn)的樣式。通過使用CSS可將文檔的結(jié)構(gòu)和表現(xiàn)完全分開,HTML部分可專注于定義文檔的結(jié)構(gòu),而控制樣式則交給CSS來處理。這樣極大地降低了DOM對象的復(fù)雜性,方便使用JavaScript對其進行維護。
4.表示服務(wù)器和客戶端通信內(nèi)容的XML。XML(eXtensibleMarkupLanguage),是一種擴展性標識語言。在Ajax技術(shù)中,客戶端與服務(wù)器端交換的數(shù)據(jù)通常采用這種語言來描寫。由于XML是一種通用的標識語言,可以在不同的CGI程序中被讀取,提高了Web應(yīng)用程序的可擴展性,從而可以把用Ajax技術(shù)開發(fā)的頁面程序綁定到不同平臺的服務(wù)器程序中。
5.實現(xiàn)與服務(wù)器異步通信的XMLHttpRequest對象。XMLHttpRequest對象,早在1998年就已經(jīng)集成到了IE中了。隨后,在各種主流的瀏覽器中也陸續(xù)開始得到支持。XMLHttpRequest對象的強大之處在于,它允許開發(fā)者在JavaScript中以異步的方式向服務(wù)器發(fā)出HTTP請求并得到響應(yīng),用戶會有類似于桌面應(yīng)用程序的動態(tài)、快速響應(yīng)和高交互性的體驗。
6.協(xié)調(diào)上述各種技術(shù)的JavaScript。JavaScript將上面提到的所有技術(shù)黏合在一起。通過JavaScript代碼,開發(fā)者可以訪問并維護當前頁面的DOM對象,包括對其進行添加、刪除和修改等操作,還可以通過維護某個DOM元素的CSSClass來改變它的外觀樣式,也可以使用XMLHttpRequest對象訪問服務(wù)器的CGI程序,并將返回的XML或JSON類型的數(shù)據(jù)解析后應(yīng)用到當前的計算或顯示中。
作為一種新的Web應(yīng)用程序模型,Ajax是一項非常誘人的技術(shù),但并不意味著它就是一項通用的技術(shù),一些場合使用Ajax可以帶來很好的用戶體驗,而另外一些場合有可能給用戶的使用帶來災(zāi)難。Ajax的優(yōu)點是可以很方便地實現(xiàn)異步交互與動態(tài)刷新Web頁面,因此適用于用戶和服務(wù)器交互頻繁的場合。
作為Web2.0的主流應(yīng)用技術(shù),Ajax使瀏覽器可以為用戶提供更為自然的瀏覽體驗,同時Ajax使得Web應(yīng)用既保留了B/S結(jié)構(gòu)的優(yōu)點,又具有C/S結(jié)構(gòu)應(yīng)用的強大功能和用戶感受。所以,可以認為,Ajax就是Web標準和Web應(yīng)用的可用性理論的集大成者,它極大地改善了Web應(yīng)用的可用性和用戶的交互體驗,最終得到了用戶和市場的廣泛認可,因此,Ajax技術(shù)在Web2.0時代的廣泛應(yīng)用也是用戶和市場的共同選擇。