JavaScript庫,ICEfaces,Adobe公司的Flash,微軟Silverlight,現在還有HTML5,全球性的網絡支配地位的競爭已經進入了嶄新的時代——一個富網絡應用(簡稱RIA,中文也有叫富互聯網應用)的時代。
本文目的是界定什么是RIA,解釋為何網絡已經開始向RIA靠攏,探索今天已經存在的不同RIA框架,對每個框架作出一些優點和缺點的概述,并討論這些新技術在未來將是怎么樣的生存態。
RIA是何物?
所謂RIA,或者說富網絡網應用,就是指可以像桌面程序一樣操作的網絡應用。 在RIA冒出來之前,大多數的網絡應用都是靜態的頁面構建的。
Sumo Paint 是一個基于Flash的RIA, 具有像Photoshop一樣的圖形編輯功能。
跟桌面應用程序不同,任何一個網頁的互動往往需要重新加載一個全新的頁面。而桌面應用程序,在另一方面,有很多更好的用戶交互性,因為所有處理都是在用戶的機器本身,所以能給以更加無縫的用戶體驗。
因此,軟件開發商開始問自己,“我們產品應該是一個桌面應用程序還是一個Web應用程序呢?”
這一直是一個公平的問題,因為這兩種類型的應用程序都具有各自優點和缺點。
桌面應用程序具有流暢的用戶交互性,但軟件是售出去的,會遇到發布和更新的問題。
Web應用程序,另一方面,很容易從網上獲得,擺脫相關的軟件發布和更新的問題,但在用戶交互性體驗非常差。
因此,怎么樣才能兩全其美呢?
RIA就是兩全其美。 RIA通過網絡發布,有非常豐富的用戶交互。得益于Ajax的出現,一個無需刷新就可以發送服務器請求的網絡應用的方法,新技術出現,加入了RIA的運動。
基于這些技術出現了一些框架,幫助開發人員構建和部署富網絡應用程序,如JavaScript庫,ICEfaces,Adobe Flash 4(Flex 3前身),微軟Silverlight,以及HTML5的。
讓我們來一個個探討RIA的框架。
網絡應用的JavaScript庫
JavaScript庫,例如 jQuery和MooTools 是首批技術之一,可以真正的幫助部署流暢和互動的富網絡應用。它們提供通過杠桿客戶端腳本來處理前端接口功能的RIA框架。它們是一些基本的 Javascript文件,由一些有用的,經過跨瀏覽器測試功能的集成。可以使用Ajax,以及處理普通的基于用戶驅動事件的交互,如顯示和隱藏內容。
目前最流行的有jQuery(尤其是使用jQuery UI),MooTools,YIU(雅虎用戶界面庫),以及EXTJS。這些庫包括RIA組件,如網格,圖表和復雜的表單元素,以及處理Ajax的工具。最引人入勝的是,大部分網絡開發的JavaScript庫都是開源的。
如果你不想購買一個集成開發環境(IDE),但仍希望在自己的網站絢麗而專業的RIA功能,JavaScript庫是一個很不錯的選擇。
使用JavaScript庫的網站有Google,Digg,雅虎,亞馬遜,微軟,Twitter,以及Best Buy。
ICEfaces
ICEfaces是標準的JavaServer Faces(JSF)的框架的擴展,旨在去除方程中的JavaScript從而簡化程序員的工作流程。換句話說,ICEfaces通過Java應用接口為你處理了所有的JavaScript / Ajax。通過刪除這些自定義JavaScript函數的復雜引入,大大簡化了創建富網絡應用的任務。
如果你的團隊主要成員是Java開發人員,或者如果你的網絡應用程序不需要其它ICEfaces沒有的復雜組件,又或者如果你的網絡應用程序是事件驅動的, 那么使用ICEfaces是很好的選擇。如果你的網路應用是事件驅動的,請確定你已經了解ICEfaces不提供真正的“服務器推”技術的, HTML5, Flash Builder 4和Silverlight都支持的。不過,相應地ICEfaces使用長輪詢的方法來模擬服務器推技術。
使用ICEfaces的網站有波音,美國航空航天局,聯合太平洋公司,T - Mobile,以及美國銀行。
Adobe Flash Builder 4
Flash已經出現了很長一段時間,但是用使用Flash來構建整個網絡應用十分麻煩,直到Flex的引進,這是Flash的一個擴展,提供RIA 網絡組件。
Adobe Flash Builder 4最令人興奮的是它的跨平臺和跨瀏覽器特性,允許程序在所有的操作系統和所有的瀏覽器上以同樣的方式運行。相比于JavaScript,瀏覽器有不同的 JavaScript引擎管理和處理的代碼,而Adobe的Flash只有一個引擎,用戶通過Adobe Flash瀏覽器插件來安裝(通常的情況是他們有了)。
Flash Builder 4 應用之所以能如此,因為它們已經嵌入到HTML頁面,這意味著瀏覽器本身并沒有對應用程序的性能有什么影響。這意味著你如果你樂意, 你還可以在IE6上運行最復雜的網絡應用程序。(這當然簡單,因為Flash插件/引擎經常會更新,因此只是稍微依賴于用戶插件的版本)。
這些應用通常是伴隨著服務器端處理,比如一個Java后端處理,而且需要Flash Builder 4IDE做開發。
如果你的團隊主要是Java開發(因為搭配Java運作良好),或者你的應用程序使用事件驅動的構架,可以選擇Adobe Flash Builder 4。
使用Flash作為網絡應用程序的網站有Mint.com,Flickr和Hyundai。
Silverlight
Silverlight是基本上微軟版本的Adobe Flex /的Adobe Flash?,F在已獲得了一些吸引力,但似乎并沒有達到的Adobe Flash的普及程度。
Silverlight應用程序明顯約束于.NET的后端,因為它是微軟的產品。這意味著,你不得不 Silverlight /.NET 和Adobe Flex / [一些服務器端腳本,如PHP] 之間整合考慮。
如果你的網絡應用需要復雜的圖形,或者如果你的團隊主要是.NET開發人員,又或者如果你的應用程序使用事件驅動的架構,那你可以選擇 Silverlight。
使用Silverlight的網站,如Netflix。
HTML5
HTML5的是RIA運動中的最新發展。 HTML5,在本質上是HTML4,JavaScript,CSS,Javascript代碼庫以及Falsh的最優合并,利用API模型成為一個單一規范。 HTML5的是一個開放的技術,這意味著不會有單一的主管團體如Flash的Adobe或Silverlight的微軟。
由于HTML5規范還沒有完成,IE9尚未發布,要建立產品級的網絡應用,你還需要等待一點點時間。
目前,所有主要瀏覽器除了IE8都支持HTML5。由于IE8的瀏覽器市場占據了主要部分,在IE9發布之前,HTML5實在難以成為主流。
一旦HTML5得到廣泛支持,如果你不想購買和學習的IDE(像Flex和Silverlight框架所必需的),如果你的應用程序使用事件驅動架構,或者如果你喜歡使用內置的HTML功能和JavaScript API 功能而不是使用第三方JavaScript庫,那么使用HTML是很好的選擇。
盡管HTML5中可以很好地處理圖形,但是使用Flash和Silverlight來處理復雜圖形和動畫在目前仍然容易/更快的選擇。
RIA 的未來
HTML5應用程序是互聯網的未來嗎?不完全是。只要那些創造性和創新性的網絡開發人員還在不斷的去創造一些特別的東西,就會總是出現一些新技術可以造出些HTML5或其他任何網絡技術無法完成的神奇的東西。
JavaScript庫,ICEfaces,Flash,Silverlight和HTML5的存在首要原因是其創造力和創新性。未來的網絡將會由許多共存的技術組成,就像現在。
原文鏈接:http://sixrevisions.com/web-development/building-rich-internet-applications-with-frameworks/
譯文鏈接:使用框架建立富聯網應用
-- 學海無涯