網(wǎng)應(yīng)用程序?)
摘要富客戶端互聯(lián)網(wǎng)應(yīng)用程序RIA正在重塑 Web 體驗(yàn)——它將復(fù)雜計(jì)算從服務(wù)器搬到客戶端讓應(yīng)用響應(yīng)更快、交互更流暢、部署成本更低。本文通過在線購物流程的對(duì)比揭示傳統(tǒng)頁面式 Web 應(yīng)用因 HTTP 無狀態(tài)協(xié)議而頻繁往返服務(wù)器的痛點(diǎn)并回顧 RIA 從 Java Applet 到 Web 2.0 的演進(jìn)脈絡(luò)。關(guān)鍵詞RIA、富客戶端、Web 應(yīng)用、用戶體驗(yàn)、客戶端計(jì)算。軟件工業(yè)的歷史已經(jīng)發(fā)生了驚人的改變。我們從單機(jī)時(shí)代進(jìn)入了客戶端/服務(wù)器端時(shí)代曾經(jīng)為客戶帶來便利和生產(chǎn)力提升的單機(jī)系統(tǒng)已成為歷史。隨著互聯(lián)網(wǎng)時(shí)代的到來一群夢(mèng)想家正在改變我們的桌面。計(jì)算機(jī)銷售商和 IT 公司渴望從復(fù)雜的客戶端/服務(wù)器端版本管理中解脫出來而技術(shù)人員卻需要它們來進(jìn)行復(fù)雜的多層計(jì)算。此時(shí)客戶端/服務(wù)器端模式反而成為了負(fù)擔(dān)。為了以示區(qū)別這種雖然很不錯(cuò)但顯得很傳統(tǒng)的桌面應(yīng)用程序被稱為“富客戶端”。另外那些多線程、傳遞消息、持久化甚至簡單的玩具都在服務(wù)器上運(yùn)算的應(yīng)用程序如果我們不去細(xì)想這些只知道它最終為用戶提供了豐富的體驗(yàn)而且甚至完全無需部署——這個(gè)讓我們感覺良好的新應(yīng)用程序類型稱之為“瘦客戶端”。然后我們遇到了新的挑戰(zhàn),那就是我們進(jìn)入了富客戶端互聯(lián)網(wǎng)應(yīng)用程序的年代,這是一種使用頗具懷舊色彩的強(qiáng)力桌面應(yīng)用程序來代替那些可惡的需要下載的頁面.RIA們運(yùn)行在虛擬機(jī)之上,具備馬上成為一個(gè)全功能桌面程序的潛力.與那些只需要從服務(wù)器上下載而來只能顯示簡單內(nèi)容的WEB頁面不同的是,RIA卻是的的確確運(yùn)行在客戶端的.就像在客戶端/服務(wù)器端那個(gè)年代一樣,能夠在本地的處理很多的數(shù)據(jù)(例如,排序,分組,過濾),相關(guān)的分析師認(rèn)為在未來的3,4年內(nèi)將有很多新開發(fā)的項(xiàng)目使用RIA技術(shù).一個(gè)RIA結(jié)合了使用WEB帶來的低成本的部署方案和豐富的用戶體驗(yàn)的好處,最少比現(xiàn)在的桌面應(yīng)用程序要好.而且,因?yàn)镽IA不需要刷新整個(gè)頁面來更新其中的數(shù)據(jù),所以響應(yīng)速度也更快而且通訊消耗也更低.有點(diǎn)類似一個(gè)部署了整個(gè)地球的客戶端/服務(wù)器端應(yīng)用程序.讓我們來描述一個(gè)購物車的例子,”過時(shí)”的WEB頁面和RIA之間的區(qū)別.不使用RIA技術(shù)的WEB應(yīng)用程序是基于頁面的. HTTP協(xié)議是個(gè)無狀態(tài)的協(xié)議,所以當(dāng)用戶從一個(gè)頁面移動(dòng)到另外一個(gè)頁面的時(shí)候,WEB瀏覽器無法記得用戶在上個(gè)頁面做的操作.為了治療這個(gè)”失憶癥”,必須使用HTTP session來在服務(wù)器端記錄用戶的狀態(tài).假設(shè)以下是在線購物線程的流程,依次進(jìn)行以下操作:1,用戶在 頁面#1 搜索一個(gè)商品2,服務(wù)器會(huì)處理這個(gè)請(qǐng)求,并且返回一個(gè)可能包含(也可能不包含)符合要求商品的頁面#23,用戶將這個(gè)物品放入購物車,這個(gè)操作也會(huì)導(dǎo)致在服務(wù)器端也要?jiǎng)?chuàng)造出購物車并且儲(chǔ)存用戶的商品.隨后,服務(wù)器將返回一個(gè)頁面#3,這樣用戶就能夠繼續(xù)購物(重復(fù)2 3步)或者去結(jié)帳#4在結(jié)帳操作中,服務(wù)器會(huì)從session對(duì)象中檢索被選擇的商品,并且返回一個(gè)頁面#5來告訴用戶填寫物流信息.這些數(shù)據(jù)返回到服務(wù)器進(jìn)行保存后,再次返回一個(gè)頁面#6給客戶端,里面包含著支付的相關(guān)信息.隨后將在頁面#7中確認(rèn)支付信息并且最終完成購物.這個(gè)最簡單的在線購物流程卻要與服務(wù)器之間交互7個(gè)來回.這與桌面應(yīng)用程序有相當(dāng)大的區(qū)別.雖然在WEB應(yīng)用程序之中,雖然刷新單個(gè)的頁面很快,而且通常用戶都能接受8秒以內(nèi)的延遲.但是這樣能夠刺激用戶來完成購物呢?在想一下,因?yàn)槊看文愕南到y(tǒng)給了用戶7次的重新考慮的機(jī)會(huì).假設(shè)網(wǎng)絡(luò)和服務(wù)器很慢的時(shí)候結(jié)果又是如何呢?漫長的等待只可能讓你的潛在客戶離開你的店鋪.對(duì)比起瘦客戶端來說, RIA程序去除了這些繁雜的應(yīng)答來回,而且因?yàn)榇蠖鄶?shù)處理都是在客戶端上執(zhí)行的,這樣而來極大的改善了系統(tǒng)在大量數(shù)據(jù)處理的時(shí)候的性能.另外,RIA程序是可以持有狀態(tài)的.他能在客戶端儲(chǔ)存數(shù)據(jù),簡單的說,RIA不是一些完全靠服務(wù)器端控制的頁面.他們是確確實(shí)實(shí)在客戶端上運(yùn)行的程序,只在處理和交互數(shù)據(jù)的時(shí)候和服務(wù)器端進(jìn)行通訊.RIA程序可謂同時(shí)具備用戶友好的界面和企業(yè)級(jí)應(yīng)用程序的優(yōu)點(diǎn).眾所周知在用戶最后結(jié)帳的時(shí)候頁面卻失去了回應(yīng)而導(dǎo)致不得不取消掉訂單這樣的事故讓一些電子商務(wù)網(wǎng)站如在線票務(wù)預(yù)訂系統(tǒng)或者在線零售商蒙受損失.我們有相當(dāng)多的用戶投訴電話,為客服中心和系統(tǒng)本身都產(chǎn)生了不可忽視的成本增長.需要相當(dāng)之多的雇員來維持系統(tǒng)的運(yùn)行不得不說對(duì)于一個(gè)企業(yè)的生產(chǎn)力造成了影響.而RIA能夠提供比HTML應(yīng)用程序更好的效率,這將減少操作和構(gòu)造的成本.最后,我們來介紹一下一些設(shè)計(jì)優(yōu)良的RIA用來構(gòu)造我們的”捕鼠器”(指用來引誘用戶上鉤)2002年的時(shí)候,MACROMEDIA公司展示了富客戶端應(yīng)用程序的模型,它讓所有的”老舊”的WEB 1.0頁面顫抖.但是最早的RIA應(yīng)用程序卻是在1995年由JAVA創(chuàng)造出來的.JAVA最初被大家接受的是一個(gè)叫做applets的一個(gè)可以下載的小程序.applets是使用java AWT(之后是Swing)類庫做成的,依靠瀏覽器上的JVM運(yùn)行.但是因?yàn)橄喈?dāng)使用起來相當(dāng)有技術(shù)難度,applets最終并沒有怎么流行,反倒是JAVA自身在服務(wù)器端和移動(dòng)平臺(tái)上風(fēng)光無限.2004年的時(shí)候,TIM O’REILLY引用了一個(gè)新詞匯 WEB 2.0.但是WEB 2.0的標(biāo)準(zhǔn)卻從來沒有被清晰的定義過.對(duì)于有些人來說,一些看起來很COOL的網(wǎng)站就可以被稱為WEB 2.0.將這些看起來很COOL的網(wǎng)站貼上WEB 2.0的標(biāo)志似乎很流行.但是通常WEB 2.0是指一些面向公眾的網(wǎng)站,人們可以相互的合作和交流并且在這些網(wǎng)站上面建立關(guān)于他們自身的頁面.WIKI百科上有一片相當(dāng)長的文章,或許能夠?yàn)槟忝靼走@個(gè)詞匯的真實(shí)意義給予一些幫助.如今甚至出現(xiàn)了WEB 3.0,指那些semantic(不明)頁面……好吧讓我們停止玩名字的游戲,回到本書的主題上來:RIA.