富聯(lián)網(wǎng)應(yīng)用兩全其美 技術(shù)共存的時(shí)代
JavaScript庫(kù),ICEfaces,Adobe Flash,微軟Silverlight,現(xiàn)在還有HTML 5,全球性的網(wǎng)絡(luò)支配地位的競(jìng)爭(zhēng)已經(jīng)進(jìn)入了嶄新的時(shí)代——一個(gè)富網(wǎng)絡(luò)應(yīng)用(簡(jiǎn)稱(chēng)RIA,中文也有叫富互聯(lián)網(wǎng)應(yīng)用)的時(shí)代。
51CTO推薦閱讀:RIA 一個(gè)擁有三種不同哲學(xué)理念的Web程序
RIA是何物?
所謂RIA,或者說(shuō)富網(wǎng)絡(luò)網(wǎng)應(yīng)用,就是指可以像桌面程序一樣操作的網(wǎng)絡(luò)應(yīng)用。在RIA冒出來(lái)之前,大多數(shù)的網(wǎng)絡(luò)應(yīng)用都是靜態(tài)的頁(yè)面構(gòu)建的。SumoPaint是一個(gè)基于Flash的RIA,具有像Photoshop一樣的圖形編輯功能。
跟桌面應(yīng)用程序不同,任何一個(gè)網(wǎng)頁(yè)的互動(dòng)往往需要重新加載一個(gè)全新的頁(yè)面。而桌面應(yīng)用程序,在另一方面,有很多更好的用戶(hù)交互性,因?yàn)樗刑幚矶际窃谟脩?hù)的機(jī)器本身,所以能給以更加無(wú)縫的用戶(hù)體驗(yàn)。
因此,軟件開(kāi)發(fā)商開(kāi)始問(wèn)自己,“我們產(chǎn)品應(yīng)該是一個(gè)桌面應(yīng)用程序還是一個(gè)Web應(yīng)用程序呢?”這一直是一個(gè)公平的問(wèn)題,因?yàn)檫@兩種類(lèi)型的應(yīng)用程序都具有各自?xún)?yōu)點(diǎn)和缺點(diǎn)。
桌面應(yīng)用程序具有流暢的用戶(hù)交互性,但軟件是售出去的,會(huì)遇到發(fā)布和更新的問(wèn)題。Web應(yīng)用程序,另一方面,很容易從網(wǎng)上獲得,擺脫相關(guān)的軟件發(fā)布和更新的問(wèn)題,但在用戶(hù)交互性體驗(yàn)非常差。因此,怎么樣才能兩全其美呢?
RIA就是兩全其美。RIA通過(guò)網(wǎng)絡(luò)發(fā)布,有非常豐富的用戶(hù)交互。得益于A(yíng)jax的出現(xiàn),一個(gè)無(wú)需刷新就可以發(fā)送服務(wù)器請(qǐng)求的網(wǎng)絡(luò)應(yīng)用的方法,新技術(shù)出現(xiàn),加入了RIA的運(yùn)動(dòng)。
基于這些技術(shù)出現(xiàn)了一些框架,幫助開(kāi)發(fā)人員構(gòu)建和部署富網(wǎng)絡(luò)應(yīng)用程序,如JavaScript庫(kù),ICEfaces,AdobeFlash4(Flex3前身),微軟Silverlight,以及HTML 5的,讓我們來(lái)一個(gè)個(gè)探討RIA的框架。
網(wǎng)絡(luò)應(yīng)用的JavaScript庫(kù)
JavaScript庫(kù),例如jQuery和MooTools是首批技術(shù)之一,可以真正的幫助部署流暢和互動(dòng)的富網(wǎng)絡(luò)應(yīng)用。它們提供通過(guò)杠桿客戶(hù)端腳本來(lái)處理前端接口功能的RIA框架。它們是一些基本的Javascript文件,由一些有用的,經(jīng)過(guò)跨瀏覽器測(cè)試功能的集成??梢允褂肁jax,以及處理普通的基于用戶(hù)驅(qū)動(dòng)事件的交互,如顯示和隱藏內(nèi)容。
目前最流行的有jQuery(尤其是使用jQueryUI),MooTools,YIU(雅虎用戶(hù)界面庫(kù)),以及EXTJS。這些庫(kù)包括RIA組件,如網(wǎng)格,圖表和復(fù)雜的表單元素,以及處理Ajax的工具。最引人入勝的是,大部分網(wǎng)絡(luò)開(kāi)發(fā)的JavaScript庫(kù)都是開(kāi)源的。
如果你不想購(gòu)買(mǎi)一個(gè)集成開(kāi)發(fā)環(huán)境(IDE),但仍希望在自己的網(wǎng)站絢麗而專(zhuān)業(yè)的RIA功能,JavaScript庫(kù)是一個(gè)很不錯(cuò)的選擇。使用JavaScript庫(kù)的網(wǎng)站有Google,Digg,雅虎,亞馬遜,微軟,Twitter,以及BestBuy。
#p#
ICEfaces
ICEfaces是標(biāo)準(zhǔn)的JavaServerFaces(JSF)的框架的擴(kuò)展,旨在去除方程中的JavaScript從而簡(jiǎn)化程序員的工作流程。換句話(huà)說(shuō),ICEfaces通過(guò)Java應(yīng)用接口為你處理了所有的JavaScript/Ajax。通過(guò)刪除這些自定義JavaScript函數(shù)的復(fù)雜引入,大大簡(jiǎn)化了創(chuàng)建富網(wǎng)絡(luò)應(yīng)用的任務(wù)。
如果你的團(tuán)隊(duì)主要成員是Java開(kāi)發(fā)人員,或者如果你的網(wǎng)絡(luò)應(yīng)用程序不需要其它ICEfaces沒(méi)有的復(fù)雜組件,又或者如果你的網(wǎng)絡(luò)應(yīng)用程序是事件驅(qū)動(dòng)的,那么使用ICEfaces是很好的選擇。如果你的網(wǎng)路應(yīng)用是事件驅(qū)動(dòng)的,請(qǐng)確定你已經(jīng)了解ICEfaces不提供真正的“服務(wù)器推”技術(shù)的,HTML 5,F(xiàn)lash Builder 4和Silverlight都支持的。不過(guò),相應(yīng)地ICEfaces使用長(zhǎng)輪詢(xún)的方法來(lái)模擬服務(wù)器推技術(shù)。
使用ICEfaces的網(wǎng)站有波音,美國(guó)航空航天局,聯(lián)合太平洋公司,T-Mobile,以及美國(guó)銀行。
Adobe Flash Builder 4
Flash已經(jīng)出現(xiàn)了很長(zhǎng)一段時(shí)間,但是用使用Flash來(lái)構(gòu)建整個(gè)網(wǎng)絡(luò)應(yīng)用十分麻煩,直到Flex的引進(jìn),這是Flash的一個(gè)擴(kuò)展,提供RIA網(wǎng)絡(luò)組件。
Adobe Flash Builder 4最令人興奮的是它的跨平臺(tái)和跨瀏覽器特性,允許程序在所有的操作系統(tǒng)和所有的瀏覽器上以同樣的方式運(yùn)行。相比于JavaScript,瀏覽器有不同的JavaScript引擎管理和處理的代碼,而Adobe的Flash只有一個(gè)引擎,用戶(hù)通過(guò)AdobeFlash瀏覽器插件來(lái)安裝(通常的情況是他們有了)。
Flash Builder 4應(yīng)用之所以能如此,因?yàn)樗鼈円呀?jīng)嵌入到HTML頁(yè)面,這意味著瀏覽器本身并沒(méi)有對(duì)應(yīng)用程序的性能有什么影響。這意味著你如果你樂(lè)意,你還可以在IE6上運(yùn)行最復(fù)雜的網(wǎng)絡(luò)應(yīng)用程序。(這當(dāng)然簡(jiǎn)單,因?yàn)镕lash插件/引擎經(jīng)常會(huì)更新,因此只是稍微依賴(lài)于用戶(hù)插件的版本)。
這些應(yīng)用通常是伴隨著服務(wù)器端處理,比如一個(gè)Java后端處理,而且需要Flash Builder 4 IDE做開(kāi)發(fā)。如果你的團(tuán)隊(duì)主要是Java開(kāi)發(fā)(因?yàn)榇钆銳ava運(yùn)作良好),或者你的應(yīng)用程序使用事件驅(qū)動(dòng)的構(gòu)架,可以選擇Adobe Flash Builder 4。使用Flash作為網(wǎng)絡(luò)應(yīng)用程序的網(wǎng)站有Mint.com,F(xiàn)lickr和Hyundai。
Silverlight
Silverlight是基本上微軟版本的Adobe Flex/的Adobe Flash。現(xiàn)在已獲得了一些吸引力,但Silverlight似乎并沒(méi)有達(dá)到的Adobe Flash的普及程度。Silverlight應(yīng)用程序明顯約束于.NET的后端,因?yàn)樗俏④浀漠a(chǎn)品。這意味著,你不得不Silverlight/.NET和Adobe Flex/[一些服務(wù)器端腳本,如PHP]之間整合考慮。
如果你的網(wǎng)絡(luò)應(yīng)用需要復(fù)雜的圖形,或者如果你的團(tuán)隊(duì)主要是.NET開(kāi)發(fā)人員,又或者如果你的應(yīng)用程序使用事件驅(qū)動(dòng)的架構(gòu),那你可以選擇Silverlight。
使用Silverlight的網(wǎng)站,如Netflix。
HTML 5
HTML 5的是RIA運(yùn)動(dòng)中的最新發(fā)展。HTML 5,在本質(zhì)上是HTML4,JavaScript,CSS,Javascript代碼庫(kù)以及Falsh的最優(yōu)合并,利用API模型成為一個(gè)單一規(guī)范。HTML 5的是一個(gè)開(kāi)放的技術(shù),這意味著不會(huì)有單一的主管團(tuán)體如Flash的Adobe或Silverlight的微軟。
由于HTML 5規(guī)范還沒(méi)有完成,IE9尚未發(fā)布,要建立產(chǎn)品級(jí)的網(wǎng)絡(luò)應(yīng)用,你還需要等待一點(diǎn)點(diǎn)時(shí)間。目前,所有主要瀏覽器除了IE8都支持HTML 5。由于IE8的瀏覽器市場(chǎng)占據(jù)了主要部分,在IE9發(fā)布之前,HTML 5實(shí)在難以成為主流。
一旦HTML 5得到廣泛支持,如果你不想購(gòu)買(mǎi)和學(xué)習(xí)的IDE(像Flex和Silverlight框架所必需的),如果你的應(yīng)用程序使用事件驅(qū)動(dòng)架構(gòu),或者如果你喜歡使用內(nèi)置的HTML功能和JavaScriptAPI功能而不是使用第三方JavaScript庫(kù),那么使用HTML是很好的選擇。盡管HTML 5中可以很好地處理圖形,但是使用Flash和Silverlight來(lái)處理復(fù)雜圖形和動(dòng)畫(huà)在目前仍然容易/更快的選擇。
RIA的未來(lái)
HTML 5應(yīng)用程序是互聯(lián)網(wǎng)的未來(lái)嗎?不完全是。只要那些創(chuàng)造性和創(chuàng)新性的網(wǎng)絡(luò)開(kāi)發(fā)人員還在不斷的去創(chuàng)造一些特別的東西,就會(huì)總是出現(xiàn)一些新技術(shù)可以造出些HTML 5或其他任何網(wǎng)絡(luò)技術(shù)無(wú)法完成的神奇的東西。
JavaScript庫(kù),ICEfaces,F(xiàn)lash,Silverlight和HTML 5的存在首要原因是其創(chuàng)造力和創(chuàng)新性。未來(lái)的網(wǎng)絡(luò)將會(huì)由許多共存的技術(shù)組成,就像現(xiàn)在。
【編輯推薦】