如果要用“充滿魅力”一詞來形容當(dāng)前流行的交互設(shè)計,那么首推創(chuàng)建Web應(yīng)用程序。畢竟,當(dāng)你最終聽到某人傾倒于產(chǎn)品的交互設(shè)計,難道不是在網(wǎng)上?(Okay,我承認(rèn)iPod除外)。所有追求酷,追求創(chuàng)新的新項目都是聯(lián)機(jī)應(yīng)用的。
盡管如此,Web交互設(shè)計人員還是不可避免地對創(chuàng)建桌面應(yīng)用軟件的同事懷有一絲妒忌。桌面應(yīng)用程序所擁有的功能豐富性和響應(yīng)能力似乎是Web目前無法達(dá)到的。簡單地讓Web應(yīng)用程序迅速蔓延,會在我們所提供的體驗和用戶從桌面應(yīng)用程序獲取的體驗之間形成一道鴻溝。
但現(xiàn)在,這道鴻溝正被逐漸填平。讓我們看看Google Suggest。根據(jù)您輸入的內(nèi)容,相關(guān)的條目便幾乎立即更新。我們再看Google Maps。利用光標(biāo),在刻度線上移動來放大地圖或者縮小,所有的一切幾乎都是即時的,完全不用等待頁面的刷新。
Google Suggest
和Google Maps就是這種新型Web應(yīng)用程序的兩個例子,我在Adaptive Path上把這種理念稱為 Ajax。也就是Asynchronous JavaScript + XML的簡寫,它預(yù)示著Web可能發(fā)生一次重大的變革。
Ajax
的定義
Ajax
并不是一種新技術(shù),它實際上是幾種已經(jīng)在各自領(lǐng)域大行其道的技術(shù)的強(qiáng)強(qiáng)結(jié)合。Ajax由以下內(nèi)容組成:
·???????????
基于標(biāo)準(zhǔn)化的XHTML和CSS;
·???????????
通過
XML
和XSLT
來進(jìn)行數(shù)據(jù)交換和處理;
-
使用JavaScript來整合以上所有的技術(shù)
經(jīng)典的Web應(yīng)用程序模型工作方式如下:大多數(shù)用戶動作在界面上激發(fā)一個HTTP請求到web服務(wù)器。服務(wù)器做一些處理——獲取數(shù)據(jù),處理數(shù)字,與現(xiàn)有的應(yīng)用系統(tǒng)進(jìn)行溝通——最后返回HTML到客戶端。這樣的模型適合于以超文本為基礎(chǔ)的Web應(yīng)用程序,但作為一個強(qiáng)調(diào)用戶體驗的狂熱分子(
The Elements of User Experience
一書的擁護(hù)者),我們認(rèn)為超文本造就Web成功的東西,卻并不一定滿足軟件應(yīng)用程序的要求。
傳統(tǒng)的Web應(yīng)用程序模型技術(shù)上來說意義非凡,但它并不適用于創(chuàng)建完美的用戶體驗。當(dāng)服務(wù)器在做數(shù)據(jù)處理的時候,用戶在干什么呢?沒錯,他們在等待。一個任務(wù)所需的步驟越多,用戶需要等待的次數(shù)也越多。
顯然,當(dāng)我們設(shè)計Web應(yīng)用程序的時候,我們不應(yīng)該讓用戶傻等。界面一旦加載完成,為什么還要因為程序需要從服務(wù)器傳輸一些東西而中斷用戶交互呢?實際上,用戶為什么要看到程序與服務(wù)器的聯(lián)系?
為什么Ajax與眾不同
Ajax
應(yīng)用程序摒棄了“開—關(guān)—開—關(guān)”的交互形式,在用戶與服務(wù)器之間引入了一個中間件——Ajax引擎。看上去在應(yīng)用程序上添加一個層面會減少響應(yīng),但事實上恰好相反。
不同于加載一個網(wǎng)頁是,用戶會話一旦建立,瀏覽器就加載一個Ajax引擎——由JavaScript編寫并通常放置在一個隱藏幀內(nèi)。引擎的責(zé)任包括構(gòu)造用戶操作界面以及與服務(wù)器的溝通。Ajax引擎允許用戶與應(yīng)用程序的交互異步進(jìn)行——無須直接訪問服務(wù)器。所以用戶永遠(yuǎn)不會在服務(wù)器處理數(shù)據(jù)期間瞪眼面對一個白屏和沙漏圖標(biāo)。
?
用戶動作的處理由傳統(tǒng)的表單提交來激發(fā)一個HTTP請求,變?yōu)?span lang="EN-US">Javascript調(diào)用Ajax引擎。給用戶的回應(yīng)不用等到服務(wù)器處理后返回——比如簡單的數(shù)據(jù)校驗,在內(nèi)存中編輯數(shù)據(jù),甚至一些導(dǎo)航功能——都直接由引擎來處理。如果引擎需要從服務(wù)器獲取些數(shù)據(jù)——提交數(shù)據(jù)給服務(wù)器處理,加載額外的界面代碼,或者獲取新數(shù)據(jù)——引擎通常以XML格式激發(fā)一個異步的請求,用戶端完全沒有被中斷的感覺。
誰在使用Ajax
Google
在Ajax開發(fā)上投入了巨大的精力。去年Google推出的幾大產(chǎn)品
——
Orkut
、Gmail、Google Groups最終測試版
、
Google Suggest
和
Google Maps
——
都是基于Ajax的應(yīng)用。其他還包括:有著很多備受人們贊譽(yù)特性的
Flickr
(http://www.flickr.com/)基于Ajax,Amazon的
A9.com
搜索引擎也使用了類似的技術(shù)。
這些項目證實Ajax并不是一個技術(shù)性的實驗品,它可以實踐在現(xiàn)實世界的應(yīng)用中。它也不是一種只能在實驗室中運用的技術(shù)。Ajax適用于從簡單的單函數(shù)Google Suggest到非常復(fù)雜的Google Maps等各種規(guī)模的應(yīng)用程序。
在Adaptive Path,我們已經(jīng)基于Ajax的理念工作了好幾個月,我們意識到我們也僅僅是接觸到Ajax所能帶來的非凡體驗的一點皮毛。Ajax是Web應(yīng)用程序的一個重要發(fā)展,并且其重要性還在逐步增長。因為許多開發(fā)人員已經(jīng)熟悉Ajax所包含的技術(shù),我們期望看到更多的組織能夠像Google那樣通過Ajax獲得更大的競爭優(yōu)勢。
更進(jìn)一步
創(chuàng)建Ajax應(yīng)用程序所面臨的最大挑戰(zhàn)并不在技術(shù)上。Ajax的核心技術(shù)是成熟的,穩(wěn)定并被廣泛應(yīng)用著。這些挑戰(zhàn)在于:應(yīng)用設(shè)計人員忘掉所有我們所熟知的網(wǎng)絡(luò)限制,去想像更寬廣、更深遠(yuǎn)的可能情況。
接下來會很有趣。
Ajax
Q&A
2005
年3月13日
:自從Jesse發(fā)表了該文,他收到了不計其數(shù)的咨詢Ajax問題的信件,Jesse回復(fù)了其中有代表性的問題并整理成Q&A。
Q
:
是
Adaptive Path
還是Google發(fā)明了Ajax
?
Adaptive Path
是否協(xié)助開發(fā)了Google的Ajax應(yīng)用程序
?
A
:
Ajax
并不是由Adaptive Path或者Google發(fā)明的。Google最新的產(chǎn)品是Ajax應(yīng)用程序最具代表性的例子。Adaptive Path沒有參與Google的開發(fā),但我們在為其他的一些客戶做一些與Ajax相關(guān)的工作。
Q
:
Adaptive Path
會出售Ajax組件或者
注冊Ajax這個商標(biāo)嗎
?
我從哪里可以下載到它
?
A
:
Ajax
并不是一個具體的軟件或程序,它是一種理念——關(guān)于用合理的技術(shù)構(gòu)建Web應(yīng)用程序架構(gòu)的思考。Ajax這個名稱和它的理念都不是
Adaptive Path
私有的。
Q
:
Ajax
只不過是XMLHttpRequest的別名嗎?
A
:不是。XMLHttpRequest只是Ajax的一個組成部分。XMLHttpRequest讓客戶端與服務(wù)器的異步通訊成為可能;Ajax是本文描述的一個整體理念,它不僅依賴于XMLHttpRequest,還包括CSS、DOM和其他技術(shù)等等。
Q
:
為什么你會起這么個名字?
A
:我們需要一個簡短的表示“Asynchronous JavaScript+CSS+DOM+XMLHttpRequest”的新詞來與客戶談我們的理念。
Q
:
與服務(wù)器
異步通訊的技術(shù)產(chǎn)生很多年了,Ajax何以稱為新理念?
A
:
Ajax
包含的技術(shù)被大量應(yīng)用在現(xiàn)實世界中以至于改變了Web的基礎(chǔ)交互模式是一個新現(xiàn)象。Ajax是針對現(xiàn)在而言,因為這些技術(shù)離工業(yè)化應(yīng)用還需要很多時間去開發(fā)。
Q
:
Ajax
是一個技術(shù)平臺或者架構(gòu)嗎?
A
:都是。Ajax是一系列技術(shù)的無縫集合。
Q
:
Ajax
最適合于什么樣的應(yīng)用?
A
:我也不知道。因為這是一個相當(dāng)新的理念,就我們的理解而言,Ajax應(yīng)用還處于初期階段。有時候傳統(tǒng)的Web應(yīng)用程序模型可能更為適合。
Q
:
是否可以理解為Adaptive Path就是取代anti-Flash
?
A
:
完全不是。Macromedia是Adaptive Path的客戶之一,并且我們長期為Flash技術(shù)做技術(shù)支持。待Ajax成熟后,我認(rèn)為對于具體的問題,Ajax有時候會是一個更好的解決方案,同樣有時候Flash也許做得更好。我們也有興趣探討兩者的結(jié)合。(比如Flickr,它結(jié)合了兩者)。
Q
:
Ajax
在易用性和瀏覽器兼容性上是否有限制
?Ajax是否會與后退按鈕沖突?Ajax與REST(雷達(dá)電子掃描技術(shù))兼容嗎?Ajax的開發(fā)有哪些安全考慮?Ajax能為那些禁止Javascript運行的用戶工作嗎?
A
:
所有這些問題的答案,我只能說“可能”。已經(jīng)有很多的開發(fā)者著手這些方面的工作。要評估Ajax的所有限制,我想還需要做很多工作,我們希望Ajax開發(fā)社區(qū)能揭示更多的信息。
Q
:
你所提到的Google的一些應(yīng)用中實際上并沒有使用XML。我一定要在Ajax應(yīng)用中使用XML或XSLT嗎?
A
:
不是,對于Ajax客戶端,XML作為數(shù)據(jù)交換的載體是支持最為完善的(XMLHttpRequest,DOM支持)。當(dāng)然,你沒有理由不接受可以達(dá)到同樣效果的技術(shù),例如
JavaScript Object Notation
(http://www.crockford.com/JSON/)或者其他類似的數(shù)據(jù)交換的格式。
Q
:
Ajax
應(yīng)用比傳統(tǒng)的Web應(yīng)用程序方便開發(fā)嗎?
A
:也不盡然。Ajax的應(yīng)用不可避免要在客戶端運行復(fù)雜的JavaScript腳本。編寫復(fù)雜并且高效穩(wěn)定的腳本并不是一件容易的事情,優(yōu)秀的開發(fā)工具和框架能幫助我們接受這一挑戰(zhàn)。
Q:
Ajax應(yīng)用程序總比傳統(tǒng)的Web應(yīng)用程序程序更友好嗎?
A
:不一定,Ajax給交互設(shè)計人員更多的靈活性。能力越大,責(zé)任也越大。我們必須小心使用Ajax去改善用戶體驗,而不是把它弄得更糟。
posted on 2006-05-08 11:19
happytian 閱讀(95)
評論(0) 編輯 收藏