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