AJAX全稱為“Asynchronous JavaScript and XML”(異步JavaScript和XML),是指一種創(chuàng)建交互式網(wǎng)頁應用的網(wǎng)頁開發(fā)技術(shù)。
Ajax技術(shù)是目前在瀏覽器中通過JavaScript腳本可以使用的所有技術(shù)的集合。Ajax并沒有創(chuàng)造出某種具體的新技術(shù),它所使用的所有技術(shù)都是在很多年前就已經(jīng)存在了,然而Ajax以一種嶄新的方式來使用所有的這些技術(shù),使得古老的B/S方式的Web開發(fā)煥發(fā)了新的活力,迎來了第二個春天。
具體來說,Ajax基于以下的技術(shù):
XHTML:對應W3C的XHTML規(guī)范,目前是XHTML1.0。
CSS:對應W3C的CSS規(guī)范,目前是CSS2.0
DOM:這里的DOM主要是指HTML DOM,XML DOM包括在下面的XML中
JavaScript:對應于ECMA的ECMAScript規(guī)范
XML:對應W3C的XML DOM、XSLT、XPath等等規(guī)范
XMLHttpRequest:對應WhatWG的Web Applications1.0規(guī)范(http://whatwg.org/specs/web-apps/current-work/)的一部分
可以看出,除了XMLHttpRequest 以外,所有的技術(shù)都是目前已經(jīng)廣泛使用,得到了廣泛理解的基于Web標準的技術(shù)。而XMLHttpRequest雖然尚未被W3C采納,其實已經(jīng)是一個事實上的標準。幾乎所有主流的瀏覽器,例如IE、Firefox、Netscape、Opera、Safari全部都支持這個技術(shù)。所以Ajax就是目前做 Web開發(fā)最符合標準的技術(shù)。上述的所有技術(shù)都已經(jīng)可以在瀏覽器中使用,因此用戶不需要安裝任何額外的軟件(只需要一個瀏覽器,例如IE),就可以運行任何符合標準的Ajax應用。這對于Ajax技術(shù)的普及、降低部署維護的成本是非常重要的。
此外,隨著瀏覽器的發(fā)展,更多的技術(shù)還會被添加進Ajax 的技術(shù)體系之中。例如,目前Firefox瀏覽器的最新版本已經(jīng)可以直接支持矢量圖形格式SVG。Firefox已經(jīng)可以支持JavaScript 2.0(對應ECMAScript 4.0規(guī)范)中的E4X(JavaScript的XML擴展)。Firefox、Opera、和Safari瀏覽器還可以支持Canvas(也是Web Applications1.0規(guī)范的一部分),網(wǎng)絡(luò)上已經(jīng)有人開發(fā)出了使用Canvas技術(shù)制作的3D射擊游戲的演示版。但是因為這些技術(shù)目前還沒有得到市場占有率最高的IE瀏覽器的支持,因此目前只能被應用于一些有限的場合(例如,在企業(yè)/機關(guān)內(nèi)部,可以要求用戶只使用Firefox瀏覽器)。
Ajax技術(shù)之中,最核心的技術(shù)就是XMLHttpRequest,它最初的名稱叫做XMLHTTP,是微軟公司為了滿足開發(fā)者的需要,1999年在 IE5.0瀏覽器中率先推出的。后來這個技術(shù)被上述的規(guī)范命名為XMLHttpRequest。它正是Ajax技術(shù)之所以與眾不同的地方。簡而言之, XMLHttpRequest為運行于瀏覽器中的JavaScript腳本提供了一種在頁面之內(nèi)與服務器通信的手段。頁面內(nèi)的JavaScript可以在不刷新頁面的情況下從服務器獲取數(shù)據(jù),或者向服務器提交數(shù)據(jù)。而在這個技術(shù)出現(xiàn)之前,瀏覽器與服務器通信的唯一方式就是通過HTML表單的提交,這一般都會帶來一次全頁面的刷新。
XMLHttpRequest的出現(xiàn)為Web開發(fā)提供了一種全新的可能性,甚至整個改變了人們對于Web應用由什么來組成的看法。在這個技術(shù)出現(xiàn)之前,由于技術(shù)上的限制,人們認為Web應用就是由一系列連續(xù)切換的頁面組成的。因此整個Web應用被劃分成了大量的頁面,其中大部分是一些很小的頁面。用戶大部分的交互都需要切換并刷新整個頁面,而在這個過程中(下一個頁面完全顯示出來之前),用戶只能傻等,什么都做不了。這就是我們所習以為常的Web應用, 10年以前就是這個樣子。然而XMLHttpRequest技術(shù)的出現(xiàn)使得我們可以打破這種笨拙的開發(fā)模式,以一種全新的方式來做Web開發(fā),為用戶提供更好的交互體驗。大量的探索者(自豪的說,也包括筆者在內(nèi))以XMLHttpRequest技術(shù)為基礎(chǔ),將一些古老的Web技術(shù)重新包裝整合。經(jīng)過了多年的不懈努力,終于在2005年開花結(jié)果。在這一年,出現(xiàn)了一個新的術(shù)語Ajax,來描述這樣一類的技術(shù)和開發(fā)方式。
與傳統(tǒng)的Web 開發(fā)不同,Ajax并不是以一種基于靜態(tài)頁面的方式來看待Web應用的。從Ajax的角度看來,Web應用僅由少量的頁面組成,其中每個頁面其實是一個更小型的Ajax應用。而一些簡單的Ajax應用,例如一個簡單的RSS閱讀器,甚至只有一個頁面。每個頁面上面都包括有一些使用JavaScript開發(fā)的Ajax組件。這些組件使用XMLHttpRequest對象以異步的方式與服務器通信,從服務器獲取需要的數(shù)據(jù)后使用DOM API來更新頁面中的一部分內(nèi)容。因此Ajax應用與傳統(tǒng)的Web應用的區(qū)別主要在3個地方:
1. 不刷新整個頁面,在頁面內(nèi)與服務器通信。
2. 使用異步方式與服務器通信,不需要打斷用戶的操作,具有更加迅速的的響應能力。
3. 應用僅由少量頁面組成。大部分交互在頁面之內(nèi)完成,不需要切換整個頁面。
由此可見,Ajax使得Web應用更加動態(tài),帶來了更高的智能,并且提供了表現(xiàn)能力豐富的Ajax UI組件。這樣一類新型的Web應用叫做RIA(Rich Internet Application)應用。除了Ajax,還包括有Flash等技術(shù)。
與1990年代末的DHTML相比,Ajax更加強調(diào)符合真正的Web標準的開發(fā)方式。Ajax對于現(xiàn)有基于Web標準的技術(shù)的利用程度比DHTML高出了很多。而DHTML聲名狼藉,最終失敗的最大原因就是在于不重視基于真正的Web標準來做開發(fā)。
DHTML其實是瀏覽器大戰(zhàn)的時代微軟和Netscape為了吸引眼球而制造的一個名詞,并沒有得到W3C的認可。并且經(jīng)常被開發(fā)人員濫用,制造出一大堆不符合真正的Web標準的JavaScript腳本和HTML標記,常常只能運行在某種特定的瀏覽器中(主要是IE)。
DHTML總是過于注重各種花哨的視覺效果,而Ajax最關(guān)注的問題則是真正改善Web應用可用性,這正是Ajax技術(shù)誕生的使命,甚至也正是 JavaScript腳本語言誕生的使命。跨瀏覽器自然是Web應用可用性的重要組成部分,只有基于真正的Web標準來做開發(fā),才有可能跨瀏覽器為用戶提供一致的交互體驗。而跨瀏覽器僅僅是基于真正的Web標準做開發(fā)的一個原因。另外一個原因是,唯有這樣,才能充分地利用Web標準發(fā)展的成果(例如上述的 SVG、E4X等符合標準的技術(shù)),并且建造出向后兼容的Web應用。向后兼容的意思就是我們今天建造的Web應用,當明天用戶都使用瀏覽器的新版本(例如IE 7.0)之后,不必再加以修改就能直接運行在這些新版本之上。這樣可以降低Web應用的維護成本,并且可以真正達到改善可用性,使用戶獲得更好的交互體驗的目標(想想看,假設(shè)用戶將自己的瀏覽器升級為IE 7.0,并且訪問一個她過去經(jīng)常去的網(wǎng)站,突然發(fā)現(xiàn)網(wǎng)站的某個功能失效了,她會有什么感覺?)。做過多年Web開發(fā)的開發(fā)者都知道,以前專門為IE5.0 開發(fā)的Web應用,尤其是使用了很多JavaScript的應用,不加以修改和重新測試就運行在IE6.0上幾乎是不可能的。在這里就是沒有做到向后兼容。Ajax技術(shù)會使得這些問題都不再存在。
Ajax技術(shù)有兩個推動力,Web標準的成熟和軟件交互設(shè)計和可用性理論的成熟。在軟件的可用性方面,除了一些通用的軟件可用性和交互設(shè)計理論之外(這方面的經(jīng)典著作包括《面向使用的軟件設(shè)計》、《About Face 2.0》中文版等等),Web應用的可用性(Web usability)也是國外非常熱門的一個研究領(lǐng)域,主要側(cè)重于研究如何提高Web應用的可用性。美國在這個領(lǐng)域有著非常深入的研究,并且對于一些公共機構(gòu)網(wǎng)站的可用性還有相關(guān)的法律條款來約束(Section508,508條款,于2001年6月21日成為美國的法律,直接影響了聯(lián)邦部門和一些代理機構(gòu),還有為他們服務的網(wǎng)頁設(shè)計師。這條法律也適用于政府投資項目和任何采用了該法律的州)。對于這些網(wǎng)站,如果無法達到條款上的一些可用性要求,網(wǎng)站經(jīng)營者就違法了。如果是開發(fā)公司無法達到這些要求,就別指望從聯(lián)邦政府手中拿到這些項目。
為了對如何提高Web應用的可用性做出指導,W3C在20世紀90年代建立了Web Accessibility Initiative(WAI),致力于為網(wǎng)站建造者提供實現(xiàn)可訪問性(與可用性同義)的方法和策略(http://www.w3.org/WAI/GL/)Web可用性方面的經(jīng)典著作包括《網(wǎng)站重構(gòu)》。
綜上所述,可以認為Ajax就是Web標準和Web應用的可用性理論的集大成者。它極大地改善了Web應用的可用性和用戶的交互體驗,最終得到了用戶和市場的廣泛任何。所以可以說,Ajax就是用戶和市場的選擇。
目前Ajax已經(jīng)成為了Web應用的主流開發(fā)技術(shù),大量的業(yè)界巨頭已經(jīng)采納并且在大力推動這個技術(shù)的發(fā)展。最近的動態(tài)包括:
1. IBM、Oracle、Yahoo!、BEA、RedHat、Novell等頁界領(lǐng)先的公司啟動了Open Ajax項目。致力于為Ajax開發(fā)建造先進強大的的開發(fā)工具。IBM在2月底已經(jīng)發(fā)布了Open Ajax項目的Ajax Toolkit Framework(ATF)1.0,是一個基于Eclipse IDE的Ajax開發(fā)工具。
2. 微軟開發(fā)了自己的Ajax框架Altas,不過主要是和服務器端他們自己的ASP.NET框架配合工作。
3. Sun雖然行動遲緩,但是也將Ajax技術(shù)列入了J2EE的blueprint(藍圖)中,作為J2EE技術(shù)的有益的補充。
除了上述這些公司之外,Google 公司不可不提,因為正是他們率先采用Ajax技術(shù)建造出了一大堆非常出色的應用,才將Ajax技術(shù)引到了聚光燈下。Google公司建造的Ajax應用包括Google Maps、GMail、Google Suggest等等,其中公認最優(yōu)秀最復雜的Ajax應用是Google Maps。由于完全基于Ajax技術(shù)來建造Google Maps的界面,Google Maps提供了遠遠超越其競爭對手的地圖服務的交互體驗。如果說Google后臺的地圖技術(shù)并不存在巨大優(yōu)勢的話,那么Ajax技術(shù)和優(yōu)秀的交互設(shè)計成為了他們壓倒競爭對手的最后一根稻草。最終使得Google Maps脫穎而出,獲得了用戶的青睞。
我們可以對比一下微軟前后的兩個地圖服務就可以看出差別。
微軟公司所提供的舊的地圖服務:http://terraserver.microsoft.com。是傳統(tǒng)Web應用的代表,性能很差而且極其難用。
微軟公司所推出了新的地圖服務:http://local.live.com/。新的地圖服務包括這個網(wǎng)站上的很多其他服務完全基于Ajax技術(shù)來建造,獲得了極好的可用性。這個地圖可以看作是在Google推出了Google Maps服務之后,微軟公司痛定思痛的產(chǎn)物,在很多地方模仿了Google Maps。Ajax的典型應用除了Google Maps,還有微軟的Windows Live、Yahoo!的Flickr等等。此外國內(nèi)新浪的blog也使用了一些Ajax的技術(shù)。
目前,針對Web應用的開發(fā)工具,也是遍地開花,然而,正在采用Ajax技術(shù)、具有完整解決方案的當數(shù)WebBasic。有興趣的可以在http://webbasic.blog.ccidnet.com下載白皮書。
聯(lián)系客服