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