//作者: 王瑋琳? 2007-01-20
三 什么樣的RIA?
??? 如果只把RIA看成一種概念,世間一切微言妙語皆是佛法,凡是能實現"Rich User Experience"的Internet程序,都可以看成RIA的程序。但如果真若是這樣定義的話,界定什么是RIA什么不是就比較困難了。RIA到底應該是個什么樣的,最早提出RIA概念的Macromedia(如今被Adobe收購了)的表述如下:
A rich Internet application (RIA) is an entirely new kind of web experience that is engaging, interactive, lightweight, and flexible. RIAs offer the flexibility and ease of use of an intelligent desktop application, and add the broad reach of traditional web applications.
???? 前一句是針對Web程序本身的,就不多分析了,讓我們來看看后一句,直譯過來就是“RIAs 提供了一種彈性,客戶可以輕松的在大量傳統的Web程序上,使用智能的桌面程序”。略有一點抽象, 我羅唆點用直白一點的方式來說一下。到目前為止,傳統桌面程序和互聯網程序都有比較明顯的區別,各有各的地盤。桌面程序往往功能強大、具備良好的交互性,界面豐富、響應時間短;而Web程序的優勢在于用戶的零部署安裝、瀏覽器連通著的無限的咨詢信息;一方面,在經歷了C/S轉B/S的重新洗牌后,桌面程序和互聯網程序二者的分工也逐漸明確;另一方面,桌面程序也在想方設法的去利用互聯網,分享互聯網帶來的好處,比如每日連線升級的殺毒軟件,定時從網站上下載新聞的RSS閱讀器等等。那么很自然的,我們就希望能有新的開發方式,開發出來的軟件能同時擁有桌面軟件和WEB軟件的優點。這就是RIA的目標:用某種技術開發出一個程序,不需要什么額外的工作,就能在桌面環境里做運行,又能部署到互聯網上,這個程序還需要繼承桌面軟件和WEB軟件的現有優點。
?? ?簡單的說,需要通過RIA去抹掉現有的桌面程序和WEB程序的界限。
?? ?我們可以看看Adobe官方提供的兩個簡單的例子,感受一下基于Flash的RIA是什么樣:
http://examples.adobe.com/flex2/inproduct/sdk/restaurant/finder.html?
http://examples.adobe.com/flex2/inproduct/sdk/photoviewer/PhotoViewer.html
???? 對于RIA程序應當擁有什么樣的具體特性,我還沒有發現為大家所一致認可的說法。對一些現有的具體技術實現的程序是不是RIA目前也存在很多爭論。所以在這里我也就只列一下提的比較多的RIA的特點,不做過多的介紹,以免說的不對,誤導大家。
- 良好的用戶體驗, 響應速度快和豐富的用戶界面
- 基于互聯網的開放標準進行數據傳輸
- 運行時快速高效
- 能整合多種媒體格式
- 豐富的組件,基于事件驅動,能進行快速開發
- 支持聯機/離線的數據傳輸
- 良好的兼容性,能在多種平臺下運行
???????????????????????
?? 這里指出需要注意的幾條:
?1. Macromedia提出并推出用于了實現RIA的開發平臺,但RIA不是專指Adobe(Macromedia)的那套開發體系,如果真要那么叫的話,可以稱之為 Flash RIA(國外一些人喜歡這么說)。
?2. RIA目前在很多地方既指富互聯網應用系統,又指富互聯網應用系統的開發技術,我們要注意區別。
?3. 一般的互聯網上的富客戶端程序(包括擁有聯機升級功能的桌面程序)并不能直接被看成RIA程序,RIA程序應當滿足很多Internet運行的特點,比如功能要足夠強大、跨平臺、統一部署等等。
?4. 至少從目前看,RIA一般還不能用某個單一的技術來實現,基本都是一些技術的綜合應用,并且其實現的這種"Rich experience"也是基本是相對與過去基于HTML實現的程序而言的;不易把RIA的思想無限擴大,要知道人類對感觀的追求可是永無止境的。
???? 我們可以期待在經過一段時間發展和總結之后,人們能對RIA程序的應該擁有的特性達成明確的共識,并能制定統一的標準,這樣將來我們能把RIA落實為一個技術詞匯,從而明確的界定RIA在人類于互聯網中追逐夢想的征途中所處的階段,評價它起的作用。
四 當前的RIA開發技術簡介
??
???? 正如前面所說,從有WEB的第一天起,我們就在追求用更美更絢麗的方式去展現內容,而RIA應當有些什么硬指標目前也沒有定論,所以如今號稱能實現RIA的技術的非常的多。主流的RIA開發技術大部分的原理都很相似,基本都是基于XML布局來做UI,通過豐富的組件,同時把更多的UI展現的工作交給客戶端,盡可能的減少數據通訊的量來獲取更短的響應時間。下面談談我對一些有一定影響力的RIA開發技術的看法:
1) Adobe Flash/Flex
??? Flash就不需要介紹了,互聯網中的老資格了,UI展現能力沒的說,還一直在與時俱進。Flex是Adobe推出的創建并發布RIA的開發平臺,最終是要把程序發布成Flash,從而一舉解決了瀏覽器之間的移植問題。Flex使用MXML進行布局,用它自己的類似Javascript的Actionscript語言控制邏輯,目前是Flex的版本是 2.0。根據我直接的使用,Flex就像當年的VB,非常的不錯;此外,Adobe將要推出Apollo的東東,能實現更高層次的RIA開發及運行支持,值得期待。我的感覺Apollo正在做一些當年Java承諾過卻沒有做到的事情,到底Apollo能不能做到,還需要時間去考驗。
?2) Laszlo
??? Laszlo 也是一個有多年歷史的開源的RIA開發環境了,它就顯得更實在一點。Laszlo平臺主要目的是在目前主流的一些技術的基礎上來實現RIA,它用的是名為LZX的描述語言,LZX整合了XML和Javascript,這樣很多程序員都可以用最小的代價去進行RIA開放。Laszlo平臺運行在J2EE 應用服務器上,也是把程序發布成SWF格式的文件,從這點上來說,Laszlo的本質和Flex是一樣的。Laszlo還打算將LZX編譯成Java或.NET本地代碼,從而提高效率,跨大覆蓋面。
3) Microsoft WPF/Expression
??? Microsoft的Windows Presentation Foundation(WPF)是Vista的一部分,是一個圖形和展示引擎,主要由新加到.NET框架中的一組類集合而成。Avalon使用的布局語言是"XAML"(可擴展應用程序標記語言),用C#進行編程。微軟去年年末推出了對應的開發工具MS Expression Studio, 一度引起轟動。其實WPF和這與Flex及Laszlo都原理都是如出一轍,不過WPF的程序毫無疑問目前只能在MS的平臺上(嚴格說是只能在Vista上)運行。
4) Java SWT/JSF
?? Java是互聯網里的霸主,RIA的這套理念的很多東西Java早就告訴過世人了,可遺憾的是在展現方面Java一直修不成正果,從最早的Servlet到JSP Tag, 幾乎一度讓人從失望到絕望。Java基礎類(JFC/Swing)中的用戶界面組件就不用說了,這兩年開始流行的SWT工具箱,一樣基于XML布局的JDNC,拉上AJAX救火的JSF,也都遠沒有Flex、WPF這些新銳來的朝氣蓬勃; Java固有的復雜性高、效率偏低、開發投入高等問題,都阻礙了Java在RIA中的發展。注意我不是說Java不行,Flex、Laszlo都是要運行在J2EE上的,只不過在展現層Java是日落西山,如果沒有重大的技術革新,淪為配角是早晚的事。
5) AJAX:
??
???? 雖然有部分人認為AJAX這種新瓶裝老酒的東西不能劃入RIA的開發技術中,我還是要在這里把它列出來,因為有眾多的AJAX的支持者都認為AJAX能很好的實現RIA程序,比如《Pragmatic Ajax - A Web 2.0 Primer》的第一章的標題就是《Building Rich Internet Application With Ajax》。
???? 我曾經看到過一篇流傳很廣的文章,是國外一個沒有用AJAX實際做過開發的人寫給他們公司的一份調研報告,說的是AJAX是實現RIA的最好方法,原因是AJAX是在現有這些技術基礎上做RIA最簡便的方法,成本最低。他說的也有一點道理,代表了很多人想法。但事實是不是這樣,AJAX真的簡單,開發成本低么?我想每個用過AJAX做開發的人都有自己的答案。
???? 對我來說,我相信對RIA來說AJAX不是最好的選擇,拋開AJAX開放的復雜度和能實現的效果的局限性不說,在AJAX中Javascript引起的兼容性問題幾乎是需要用窮舉法去解決的,效果可想而知。舉個例子:一塊鋼鐵,原來是做成刀和矛去殺敵,后來加上火藥成了槍彈,看上去威力大多了;可你這還是站在用鋼鐵殺人的思維上,倘若直接用超聲波去對付敵人,就直接能殺人于無形,一塊鐵片都不需要用。HTML就好比這種鋼鐵,日常打把刀切菜是少不了它,有些時候需要大場面的時候,就需要用用超聲波、用氣流,甚至是原子彈解決問題,建造超聲波武器、原子彈是很難,不過用他們,同樣就是按一下按鈕的事。
6) XUL
??? XUL(發音發成"zool")擴展用戶界面語言。XUL是一個老家伙了,UI基于XML布局的思想就是從它來的,它來自于Mozilla的開放源碼項目。XUL是對html的擴展,完全兼容于html,當然也就支持Javascript。XUL實現了完整、強大的圖形用戶界面設計功能,實際上mazilla整個就是基于XUL的。XUL到底怎么樣,有多大影響力,我沒有研究過,不敢妄言,好像國外還是比較認可它的。
??? 這里我斗膽點評了一些RIA的開發技術,RIA的開發技術還有很多,大家自己要有看好的可以來補充,此外本人對RIA的認識有限,說的不妥之處還請朋友們不吝賜教。
五 不需要預測的未來
??? RIA會有將來會成為互聯網的主流么?這是一個只有一個答案的問題,那就是“會”。不需要去糾纏那些技術細節,你至少可以相信HTML及其派生出來那些技術不能讓對體驗效果的追求永無止境、又十分挑剔的我們滿意,那么能帶給我們耳目一新的感覺的RIA有什么理由不成為主流? Microsoft和Adobe已經磨刀霍霍,準備在RIA的時代里挑大梁了,我們可別光坐著看熱鬧。
???? RIA將要取代HTML? 我想我們還在用宋朝就發明了的紙,就能說明回答這個問題,如同我在前面舉的例子,如果有一天現代戰爭不需要用鋼鐵去殺人了,我們或許還需要用它去切菜。
聲明:本博客中所有文章均為版主原創,轉載請保留作者信息,并請注明出處。