??? 摘? 要: 對(duì)現(xiàn)今流行的富互聯(lián)網(wǎng)應(yīng)用(RIA)進(jìn)行了研究,介紹了RIA的概念,、RIA產(chǎn)生的背景,、RIA的特點(diǎn)以及所能解決的問(wèn)題。列出了現(xiàn)有的主流RIA實(shí)現(xiàn)技術(shù)并分析了各自的特點(diǎn),。介紹了RIA的應(yīng)用現(xiàn)狀并對(duì)RIA的發(fā)展與應(yīng)用提出了個(gè)人見(jiàn)解,。
??? 關(guān)鍵詞: 富互聯(lián)網(wǎng)應(yīng)用程序? 富客戶(hù)端? 瀏覽器/服務(wù)器
?
??? 當(dāng)前,互聯(lián)網(wǎng)已經(jīng)成為應(yīng)用程序開(kāi)發(fā)的默認(rèn)平臺(tái),。但是,,用戶(hù)對(duì)應(yīng)用程序復(fù)雜性要求與日俱增,而現(xiàn)在的互聯(lián)網(wǎng)應(yīng)用程序在完成復(fù)雜應(yīng)用方面卻始終跟不上步伐,。結(jié)果導(dǎo)致許多公司必須面對(duì)不滿的客戶(hù),、遭受營(yíng)業(yè)額損失及成本增加。Web模型是基于頁(yè)面的模型,,缺少客戶(hù)端智能機(jī)制,。而且,它幾乎無(wú)法完成復(fù)雜的用戶(hù)交互,。這樣的技術(shù)使得Web應(yīng)用程序難以使用,,支持成本高,并且在很多方面無(wú)法發(fā)揮效應(yīng)[2],。為了解決這些問(wèn)題,,出現(xiàn)了一種新類(lèi)型的Internet應(yīng)用程序,即富互聯(lián)網(wǎng)(Rich Internet Applications,,RIA),。這些應(yīng)用程序結(jié)合了桌面應(yīng)用程序的反應(yīng)快、交互性強(qiáng)的優(yōu)點(diǎn)以及Web應(yīng)用程序傳播范圍廣和容易傳播的特性。RIA簡(jiǎn)化并改進(jìn)了Web應(yīng)用程序的用戶(hù)交互,。這樣,,用戶(hù)開(kāi)發(fā)的應(yīng)用程序可以提供更豐富、更具有交互性和響應(yīng)性的用戶(hù)體驗(yàn),。
1? RIA的產(chǎn)生背景
??? 企業(yè)級(jí)應(yīng)用程序經(jīng)歷了幾次系統(tǒng)架構(gòu)方面的重要轉(zhuǎn)變,。在此過(guò)程中,客戶(hù)端的表現(xiàn)能力有起有落,。圖1顯示了Rich Internet Application的發(fā)展過(guò)程,。
?
??? 基于主機(jī)的應(yīng)用程序:應(yīng)用程序提供基于文本的非圖形化用戶(hù)界面,只有內(nèi)部人員才能進(jìn)行訪問(wèn),。
??? 客戶(hù)機(jī)/服務(wù)器(C/S)應(yīng)用程序:20世紀(jì)90年代出現(xiàn)了客戶(hù)機(jī)/服務(wù)器應(yīng)用程序,,采用圖形用戶(hù)界面,客戶(hù)端的數(shù)據(jù)處理能力比較強(qiáng),。但由于客戶(hù)端應(yīng)用程序需要進(jìn)行不斷的更新,,因此部署成本比較高。
??? 瀏覽器/服務(wù)器(B/S)應(yīng)用程序:90年代中期出現(xiàn)了B/S應(yīng)用程序,,Web的廣泛使用解決了C/S應(yīng)用程序部署和更新的困難,。但由于采用了HTML頁(yè)面形式的用戶(hù)界面,客戶(hù)端的數(shù)據(jù)處理能力較C/S應(yīng)用程序有所回落[1],。
??? C/S架構(gòu)的缺點(diǎn)主要是部署,、更新的問(wèn)題。B/S架構(gòu)的缺點(diǎn)則是無(wú)法像C/S那樣使用豐富的效果來(lái)展示數(shù)據(jù),,用戶(hù)體驗(yàn)比較糟糕[3],。從C/S到B/S,二者受限于技術(shù)本身分別發(fā)展成了重客戶(hù)端和重服務(wù)器端的模式,。而RIA的出現(xiàn)帶來(lái)了重新在客戶(hù)端和服務(wù)器端進(jìn)行更好的平衡的機(jī)會(huì),。
2? RIA的特點(diǎn)
??? 圖2是RIA的應(yīng)用程序模型。RIA是集桌面應(yīng)用程序的最佳用戶(hù)界面功能與Web應(yīng)用程序的普遍采用和快速,、低成本部署以及互動(dòng)多媒體通信的實(shí)時(shí)快捷于一體的新一代網(wǎng)絡(luò)應(yīng)用程序,。RIA是一種安全、可升級(jí),、具有良好適應(yīng)性的新的面向服務(wù)模型,。RIA結(jié)合了聲音、視頻和實(shí)時(shí)對(duì)話的綜合通信技術(shù),,從而給用戶(hù)帶來(lái)前所未有的網(wǎng)上體驗(yàn),。
?
??? RIA提供一個(gè)強(qiáng)勁的技術(shù)平臺(tái),使客戶(hù)機(jī)的能力復(fù)原到與桌面型計(jì)算機(jī)軟件應(yīng)用或傳統(tǒng)的C/S系統(tǒng)中的客戶(hù)機(jī)能力十分接近,。它適合傳統(tǒng)的N層開(kāi)發(fā)過(guò)程,,同時(shí)也能夠和遺留的環(huán)境集成以延展現(xiàn)有的應(yīng)用程序而無(wú)需進(jìn)行修改,。RIA有能力解決各種復(fù)雜性,使需要復(fù)雜性的應(yīng)用得以開(kāi)發(fā)并且減少開(kāi)發(fā)成本,。
3? 需要解決的問(wèn)題
??? 目前需要解決的技術(shù):(1)需要一個(gè)更加強(qiáng)大的客戶(hù)端運(yùn)行環(huán)境,同時(shí)提供統(tǒng)一簡(jiǎn)便的開(kāi)發(fā)模型,。(2)最大可能地利用客戶(hù)端資源,,并且資源的訪問(wèn)是在一個(gè)可以控制的環(huán)境下完成的。隨著HTML和CSS的演變,,已經(jīng)不像最初的Hyperlink(超鏈接)那么簡(jiǎn)單,,但是相對(duì)于Windows運(yùn)行環(huán)境,在瀏覽器上能夠完成的圖形表現(xiàn)遠(yuǎn)遠(yuǎn)不夠,。(3)具備訪問(wèn)網(wǎng)絡(luò)的能力,,同時(shí)能夠比較“Smart”地集成Internet上的應(yīng)用。(4)能夠自動(dòng)完成安全和升級(jí),。(5)擁有一個(gè)完整的安全模型和CAS(代碼訪問(wèn)安全),。(6)具備離線應(yīng)用的能力,因?yàn)樵L問(wèn)終端的多樣化,,對(duì)于“有時(shí)離線”的支持已經(jīng)成為一個(gè)關(guān)鍵點(diǎn),。例如在基于智能手機(jī)的應(yīng)用中,要求客戶(hù)端實(shí)時(shí)在線是不可能的,,所以在Mobile的應(yīng)用上采用傳統(tǒng)的B/S結(jié)構(gòu)已經(jīng)不太現(xiàn)實(shí),。
4? RIA應(yīng)用架構(gòu)
??? 針對(duì)上述要求,一些主流的應(yīng)用廠商也提出了各自不同的RIA實(shí)現(xiàn),。下面針對(duì)目前出現(xiàn)的一些RIA應(yīng)用架構(gòu)進(jìn)行闡述,。
??? (1)Macromedia Flash/Flex。Macromedia Flash Player的高市場(chǎng)占有率使得客戶(hù)端的RIA可以支持種類(lèi)廣泛的平臺(tái)和設(shè)備[4],。Flex是為滿足希望開(kāi)發(fā) RIA的企業(yè)級(jí)程序員的需求而推出的表示服務(wù)器和應(yīng)用程序框架,,可以運(yùn)行于J2EE和.NET平臺(tái)。Flex表示服務(wù)器提供基于標(biāo)準(zhǔn)的,、聲明性的編程方法和流程,,并提供運(yùn)行時(shí)服務(wù),用于開(kāi)發(fā)和部署豐富客戶(hù)端應(yīng)用程序的表示層,。Flex開(kāi)發(fā)者使用直觀的基于XML的MXML來(lái)定義豐富的用戶(hù)界面,。該語(yǔ)言由 Flex服務(wù)器翻譯成SWF格式的客戶(hù)端應(yīng)用程序,在Flash Player中運(yùn)行,。雖然Flex足夠強(qiáng)大,,但是其昂貴的軟件許可和不是特別流暢的開(kāi)發(fā)環(huán)境限制了其發(fā)展。Flex在近期內(nèi)很難成為主流平臺(tái),。
??? (2)Laszlo,。Laszlo是一個(gè)開(kāi)源的RIA開(kāi)發(fā)環(huán)境,。使用Laszlo平臺(tái)時(shí),開(kāi)發(fā)者只需編寫(xiě)名為L(zhǎng)ZX的描述語(yǔ)言(其中整合了XML和JavaScript),。運(yùn)行在J2EE應(yīng)用服務(wù)器上的Laszlo平臺(tái)會(huì)將其編譯成SWF格式的文件并傳輸給客戶(hù)端展示,。從這點(diǎn)來(lái)說(shuō),Laszlo的本質(zhì)和Flex是一樣的,。而且,,在未來(lái)的計(jì)劃中,Laszlo還可以將LZX編譯成Java或.NET本地代碼,,從而大大提高運(yùn)行效率,。其劣勢(shì)是缺乏大的商業(yè)實(shí)體的支持,難以成為標(biāo)準(zhǔn),。
??? (3)Avalon,。Microsoft的Avalon是下一版本W(wǎng)indows(被稱(chēng)為L(zhǎng)onghorn)的一部分,是一個(gè)圖形和展示引擎,。Avalon定義了一個(gè)在Longhorn中使用的新標(biāo)記語(yǔ)言XAML(可擴(kuò)展應(yīng)用程序標(biāo)記語(yǔ)言),。可以使用XAML來(lái)定義文本,、圖像和控件的布局,,程序代碼可以直接嵌入到XAML中,也可以保留在一個(gè)單獨(dú)的文件內(nèi),。這與Flex中的MXML或者Laszlo中的LZX非常相似,。區(qū)別是:基于 Avalon的應(yīng)用程序必須運(yùn)行在Longhorn環(huán)境中,而Flex和Laszlo是不依賴(lài)于平臺(tái)的,,僅僅需要裝有Flash播放器的瀏覽器即可[5],。
??? (4)Java SWT。Java 已經(jīng)出現(xiàn)多年,,并且完全支持創(chuàng)建基于窗體的用戶(hù)界面,。除了Java基礎(chǔ)類(lèi)(JFC/Swing)中的用戶(hù)界面組件之外,開(kāi)發(fā)人員還可以使用來(lái)自于 Eclipse Project的SWT工具箱和許多第三方工具箱進(jìn)行開(kāi)發(fā),。對(duì)于圖形來(lái)說(shuō),,可以采用Java 2D API??梢酝ㄟ^(guò)一個(gè)Web瀏覽器使用Java插件軟件,,或使用Java運(yùn)行時(shí)環(huán)境中較新的Java Web Start技術(shù)來(lái)部署應(yīng)用程序。使用Java建立Rich Client的主要缺陷是它的復(fù)雜性高及Java瀏覽器插件的低市場(chǎng)占有率問(wèn)題,。
??? (5)XUL,。XUL是一種基于XML的用戶(hù)界面語(yǔ)言,來(lái)自于Mozilla的開(kāi)放源碼項(xiàng)目,。它可用于建立窗體應(yīng)用程序,。這些應(yīng)用程序不但可以在 Mozilla瀏覽器上運(yùn)行,,而且也可以運(yùn)行在其他描述引擎上。XUL描述引擎都非常?。?00KB以下),,它可以使用XML數(shù)據(jù)也可以生成XML數(shù)據(jù)。XUL的一個(gè)主要缺點(diǎn)在于它目前還沒(méi)有獲得一個(gè)主要商業(yè)實(shí)體的支持,。XUL最大的優(yōu)點(diǎn)在于它與Gecko引擎的集成(打開(kāi)了通向大量Web標(biāo)準(zhǔn)的大門(mén)),,而且與大多數(shù)其他XML用戶(hù)界面描述語(yǔ)言相比它是一種表達(dá)力很強(qiáng)且簡(jiǎn)潔的語(yǔ)言。
??? (6)Bindows,。Bindows是用JavaScript和DHTML開(kāi)發(fā)的Web窗體框架。JavaScript用于客戶(hù)端界面的顯示和處理,,XMLHTTP用于客戶(hù)端與服務(wù)器的信息傳輸,。利用JavaScript幾乎可以實(shí)現(xiàn)Windows應(yīng)用程序的大部分功能。XMLHTTP一直以來(lái)常被用于實(shí)現(xiàn)無(wú)刷新的Web頁(yè)面,。它和 JavaScript配合,,可以完成數(shù)據(jù)從服務(wù)器和客戶(hù)端的傳輸。Bindows的一個(gè)主要缺點(diǎn)是它采用一次全部載入的方式來(lái)實(shí)現(xiàn)腳本庫(kù),,在窗口的加載期,,需要一個(gè)漫長(zhǎng)的等待過(guò)程,甚至瀏覽器的進(jìn)程會(huì)產(chǎn)生無(wú)響應(yīng)的情況,。這點(diǎn)Bindows根本沒(méi)有遵循用多少取多少的準(zhǔn)則,。另外,內(nèi)部大量利用了IE6 的技術(shù),,沒(méi)有考慮到非IE的瀏覽器,,限制了Bindows的流行[5]。
??? 另外,,微軟也提出了一個(gè)與Rich client類(lèi)似的Smart Client技術(shù),。智能客戶(hù)端應(yīng)用是一個(gè)可擴(kuò)展的、能集成不同應(yīng)用的桌面應(yīng)用程序,,并具有無(wú)接觸部署,、自動(dòng)更新、離線運(yùn)用,、動(dòng)態(tài)加載應(yīng)用組件和個(gè)性化用戶(hù)界面等特征,,在此不做贅述。
5? RIA的現(xiàn)狀及發(fā)展趨勢(shì)
??? 現(xiàn)今的應(yīng)用大多數(shù)是基于B/S結(jié)構(gòu)的Web應(yīng)用,,而RIA應(yīng)用才剛剛興起,。包括Macromedia和Microsoft等公司都已經(jīng)提供了成功的案例。在Macromedia所提供的在線體驗(yàn)中,,筆者著實(shí)感覺(jué)到了RIA帶來(lái)的不一般的體驗(yàn),。在網(wǎng)絡(luò)上也有了許多成功的RIA應(yīng)用,,但企業(yè)級(jí)的成功案例還不多。盡管如此,,RIA也已經(jīng)顯現(xiàn)出比傳統(tǒng)的基于瀏覽器的瘦客戶(hù)端應(yīng)用在處理復(fù)雜交互,、改善用戶(hù)體驗(yàn)等方面的優(yōu)勢(shì)。RIA的出現(xiàn)使得網(wǎng)絡(luò)應(yīng)用程序出現(xiàn)了分支,,基于瀏覽器的傳統(tǒng)網(wǎng)絡(luò)應(yīng)用會(huì)長(zhǎng)時(shí)間存在下去,,可以不依賴(lài)于瀏覽器的RIA應(yīng)用也會(huì)越來(lái)越多。
??? HTML的設(shè)計(jì)初衷是為了處理文本,,因此非常適合表達(dá)文本內(nèi)容,。從當(dāng)前應(yīng)用來(lái)看,HTML僅僅不適合開(kāi)復(fù)雜的企業(yè)應(yīng)用交互,,而在對(duì)于大文本信息量,,例如forum,wiki,,blog,,web mail和大量的互聯(lián)網(wǎng)站,還是非HTML莫屬[2],。因此傳統(tǒng)的基于HTML的B/S應(yīng)用還將在很長(zhǎng)一段時(shí)間內(nèi)占據(jù)主導(dǎo)地位,。盡管如此,筆者仍相信,,傳統(tǒng)的基于瀏覽器的開(kāi)發(fā)模式現(xiàn)在已經(jīng)過(guò)了其鼎盛期,。不管今天的RIA將來(lái)會(huì)不會(huì)成為主流應(yīng)用程序,人們對(duì)開(kāi)發(fā)具有高度互動(dòng)性,、豐富用戶(hù)體驗(yàn)以及功能強(qiáng)大的客戶(hù)端的追求是不變的,。但是盲目地用RIA來(lái)改造現(xiàn)有的B/S應(yīng)用也是不明智的,應(yīng)該在用傳統(tǒng)的基于HTML的B/S應(yīng)用很難甚至無(wú)法滿足要求或者使用RIA能夠很好地改善現(xiàn)有的系統(tǒng)效果時(shí)才進(jìn)行改造,,因?yàn)楫吘乖诨ヂ?lián)網(wǎng)上較為簡(jiǎn)單的應(yīng)用仍然占據(jù)主導(dǎo)地位,。而且目前RIA的體系發(fā)展仍未完全成熟,放棄現(xiàn)有的技術(shù)積累轉(zhuǎn)而學(xué)習(xí)RIA的成本仍然不小,,因此在采用RIA前需要充分地考慮,。
??? RIA具有反映快、交互性強(qiáng),、傳播范圍廣和易于傳播等特點(diǎn),,是網(wǎng)絡(luò)應(yīng)用程序的發(fā)展方向。對(duì)其進(jìn)行研究有助于改善現(xiàn)有的傳統(tǒng)網(wǎng)絡(luò)應(yīng)用程序存在的問(wèn)題,,如開(kāi)發(fā)復(fù)雜,、用戶(hù)體驗(yàn)差、難以進(jìn)行復(fù)雜交互等,,有助于掌握未來(lái)網(wǎng)絡(luò)應(yīng)用程序的發(fā)展方向,,具有較強(qiáng)的理論意義和現(xiàn)實(shí)指導(dǎo)意義,。
參考文獻(xiàn)
1?? 何志國(guó),陳奇.分布式應(yīng)用體系結(jié)構(gòu)研究.重慶郵電學(xué)院學(xué)報(bào),,2003,;15(4)
2?? 雷軍環(huán),孟益民,,厲亞.開(kāi)發(fā)基于Web的分布式應(yīng)用程序策略研究.長(zhǎng)沙民政職業(yè)技術(shù)學(xué)院學(xué)報(bào),,2004;11(1)
3?? 商瑋.多層分布式應(yīng)用系統(tǒng)及其實(shí)現(xiàn)方法.計(jì)算機(jī)應(yīng)用與軟件,,2003,;(7)
4?? 顏金桫.KCLY小土豆工作室.Flash MX 2004 ActionScript 2.0與RIA應(yīng)用程序開(kāi)發(fā).北京:電子工業(yè)出版社,2005
5?? 程序員(第02期).程序員雜志社,,2005