--------------------------------------------------------- RIA ---------------------------------------------------------
富互聯(lián)網(wǎng)應(yīng)用系統(tǒng)(RIA)簡(jiǎn)介:RIA基礎(chǔ):RIA入門(mén)
請(qǐng)關(guān)注那些超越正在失去生命力的HTML標(biāo)準(zhǔn)的技術(shù)
在過(guò)去的大約兩年中,人們的興趣一直是想構(gòu)建一個(gè)"富客戶端":這是一個(gè)用戶接口,它比用HTML能實(shí)現(xiàn)的接口更加健壯、反應(yīng)更加靈敏和更具有令人感興趣的可視化特性。RIA(Rich Internet Application,富互聯(lián)網(wǎng)應(yīng)用系統(tǒng))技術(shù)允許我們?cè)谝蛱鼐W(wǎng)上以一種象使用Web一樣簡(jiǎn)單的方式來(lái)部署富客戶端程序。無(wú)論將來(lái)RIA是否能夠如人們所猜測(cè)的那樣完全代替HTML應(yīng)用系統(tǒng),對(duì)于那些采用胖客戶端技術(shù)運(yùn)行復(fù)雜應(yīng)用系統(tǒng)的機(jī)構(gòu)來(lái)說(shuō),RIA確實(shí)提供了一種廉價(jià)的選擇。
在本專欄中,我將列舉一些當(dāng)前的RIA產(chǎn)品和技術(shù),并且提供一些如何開(kāi)始應(yīng)用這些產(chǎn)品和技術(shù)的啟示。在DevTrends站點(diǎn)和即將發(fā)行的近幾期Oracle Magazine雜志上,我將詳細(xì)探討使用Oracle平臺(tái)部署RIA的特定技術(shù)和策略。
為什么用RIA?
基于HTML的應(yīng)用程序之所以變得流行是由于應(yīng)用系統(tǒng)的部署成本低、結(jié)構(gòu)簡(jiǎn)單,且HTML易于學(xué)習(xí)和使用。很多用戶和開(kāi)發(fā)人員都樂(lè)于放棄由桌面計(jì)算機(jī)帶來(lái)的用戶界面改進(jìn),來(lái)實(shí)現(xiàn)對(duì)新數(shù)據(jù)和應(yīng)用系統(tǒng)的快速訪問(wèn)。與喪失一些重要的UI功能相比,基于Web的方式所帶來(lái)的好處要更大得多。
然而,某些應(yīng)用系統(tǒng)并不完全適合采用HTML技術(shù)。復(fù)雜的應(yīng)用系統(tǒng)可能要求多次提取網(wǎng)頁(yè)來(lái)完成一項(xiàng)事務(wù)處理,在某些領(lǐng)域中,如醫(yī)藥和財(cái)務(wù)領(lǐng)域,這往往導(dǎo)致交互速度低得無(wú)法接受。讓我考慮一個(gè)項(xiàng)目管理系統(tǒng):我們可以將其實(shí)現(xiàn)為一個(gè)HTML應(yīng)用系統(tǒng),但是如果用戶可以看到并且操作圖表、進(jìn)度表和各種層次結(jié)構(gòu),那么顯然會(huì)工作得更好。
此外,雖然HTML開(kāi)始走向簡(jiǎn)單,但是即使簡(jiǎn)單的交互活動(dòng)也仍然需要用很多的腳本來(lái)完成。即使一個(gè)輸入窗體經(jīng)過(guò)仔細(xì)的布置和全面的腳本設(shè)計(jì),它從瀏覽器所能發(fā)送的也僅僅是簡(jiǎn)單的"名字/值"對(duì)。如果一個(gè)HTML窗體能夠以XML文檔形式發(fā)送和接收更復(fù)雜的數(shù)據(jù)結(jié)構(gòu),那就好多了。
RIA利用相對(duì)健壯的客戶端描述引擎,這個(gè)引擎能夠提供內(nèi)容密集、響應(yīng)速度快和圖形豐富的用戶界面。除了提供一個(gè)具有各種控件(滑標(biāo)、日期選擇器、窗口、選項(xiàng)卡、微調(diào)控制器和標(biāo)尺等)的界面之外,RIA一般還允許使用SVG(Scalable Vector Graphics,可伸縮向量圖)或其他技術(shù)來(lái)隨時(shí)構(gòu)建圖形。一些RIA技術(shù)甚至能夠提供全活動(dòng)的動(dòng)畫(huà)來(lái)對(duì)數(shù)據(jù)變化作出響應(yīng)。
RIA的另一個(gè)好處在于,數(shù)據(jù)能夠被緩存在客戶端,從而可以實(shí)現(xiàn)一個(gè)比基于HTML的響應(yīng)速度更快且數(shù)據(jù)往返于服務(wù)器的次數(shù)更少的用戶界面。對(duì)于無(wú)線設(shè)備和需要偶爾連接的設(shè)備來(lái)說(shuō),將來(lái)的趨勢(shì)肯定是向富客戶端的方向發(fā)展,并且會(huì)逐漸遠(yuǎn)離基于文本的Web客戶端。那些運(yùn)行在膝上設(shè)備上的應(yīng)用系統(tǒng),可以被設(shè)計(jì)成以離線方式工作,或者至少當(dāng)連接丟失的時(shí)候能基本上以離線的方式工作。
圖1給出了一個(gè)典型的RIA體系結(jié)構(gòu)。XML通常被用作數(shù)據(jù)傳輸?shù)母袷,有時(shí)也被用來(lái)描述窗體的布局。在很多的實(shí)例中,客戶端可以保持與數(shù)據(jù)源的連接,這樣服務(wù)器能夠?qū)崟r(shí)地對(duì)客戶端數(shù)據(jù)進(jìn)行更新。對(duì)一個(gè)Oracle數(shù)據(jù)的訪問(wèn)可以通過(guò)Web服務(wù)調(diào)用來(lái)完成。
圖1
用于富客戶端的技術(shù)
下面是一些可用的RIA技術(shù):
Java:一些相當(dāng)復(fù)雜的客戶端應(yīng)用程序(Oracle的JDeveloper,Eclipse)都是用Java編寫(xiě)的,這說(shuō)明可以用Java來(lái)建立幾乎任何一個(gè)能夠想象得到的富客戶端應(yīng)用程序。到目前為止,Java已經(jīng)出現(xiàn)幾年了,并且完全支持創(chuàng)建基于窗體的用戶界面。除了Java基礎(chǔ)類(JFC/Swing)中的用戶界面組件之外,開(kāi)發(fā)人員還可以使用來(lái)自于Eclipse Project的SWT工具箱和許多第三方工具箱進(jìn)行開(kāi)發(fā)。對(duì)于圖形來(lái)說(shuō),可以采用Java 2D API--一個(gè)非常完整且非常復(fù)雜的圖形API。Java還具有對(duì)XML和Web服務(wù)無(wú)人匹敵的支持能力。你可以通過(guò)一個(gè)Web瀏覽器使用Java插件軟件,或使用Java運(yùn)行時(shí)環(huán)境中較新的Java Web Start技術(shù)來(lái)部署應(yīng)用程序。使用Java建立富客戶端程序的主要缺陷是它的復(fù)雜性(即使對(duì)簡(jiǎn)單的窗體和圖形也要求編寫(xiě)非常煩瑣的代碼)。它的優(yōu)點(diǎn)在于Java對(duì)Web標(biāo)準(zhǔn)的全面支持,及該語(yǔ)言和類庫(kù)的深刻內(nèi)涵。
XUL:XUL(念作"zool")是一個(gè)基于XML的用戶界面語(yǔ)言,它來(lái)自于Mozilla的開(kāi)放源碼項(xiàng)目。它可用于建立窗體應(yīng)用程序,這些應(yīng)用程序不但可以在Mozilla瀏覽器上運(yùn)行,而且也可以運(yùn)行在其他描述引擎上,如Zulu(一個(gè)Flash MX組件)和Thinleys(一個(gè)Java實(shí)現(xiàn))。XUL描述引擎都非常。100K以下),它可以使用XML數(shù)據(jù)也可以生成XML數(shù)據(jù)。同Java的情況一樣,XUL也有一個(gè)非常大的用戶團(tuán)體,這個(gè)團(tuán)體有大量的開(kāi)放源工具,如Theodore ThinletEditor(見(jiàn)“下一步”)——一個(gè)使你能夠以圖形化方式布局用戶界面,且可以生成相應(yīng)XUL的Java應(yīng)用程序。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用戶界面描述語(yǔ)言相比它是一種非常具有表達(dá)力和簡(jiǎn)潔的語(yǔ)言。
Macromedia Flash和Flex:Flash是一個(gè)已經(jīng)成熟的商業(yè)產(chǎn)品,它可以在Web網(wǎng)頁(yè)中引入交互式的圖形界面。最近經(jīng)過(guò)升級(jí)后,新版本包含了建立窗體風(fēng)格的應(yīng)用程序的功能。盡管Flash作為一個(gè)在Web上最廣泛部署的前端技術(shù)還有爭(zhēng)議(取決于所選用的Flash Player版本),但據(jù)稱已經(jīng)有98%以上的桌面系統(tǒng)都支持Falsh。由于用來(lái)創(chuàng)建動(dòng)畫(huà)式圖形的Flash工具其功能十分強(qiáng)大和是可視化的(與之相反其它技術(shù)要求進(jìn)行低級(jí)的圖形編碼),所以圖形設(shè)計(jì)人員使用起來(lái)十分得心應(yīng)手。Flah采用的腳本語(yǔ)言是ActionScript--ECMAScript 1.5的一個(gè)變種,該腳本語(yǔ)言又被稱為JavaScript。Flex產(chǎn)品對(duì)Flash增加了一個(gè)XML描述語(yǔ)言,使得可以編譯用戶界面,并且能夠用Flash Player來(lái)隨時(shí)進(jìn)行描述。Flex使得傳統(tǒng)的開(kāi)發(fā)機(jī)構(gòu)能更好地了解和使用Flash。Flex和Flash的最大缺點(diǎn)在于對(duì)XML和Web服務(wù)等標(biāo)準(zhǔn)的支持很有限,而且作為應(yīng)用開(kāi)發(fā)工具的環(huán)境還不大成熟。Flex和Flash的優(yōu)點(diǎn)在于它可以很容易的用來(lái)創(chuàng)建復(fù)雜的動(dòng)畫(huà)式顯示,以及可以使用第三方附件。
Oracle Forms:Oracle Forms是用來(lái)構(gòu)建以數(shù)據(jù)庫(kù)為中心的互聯(lián)網(wǎng)應(yīng)用系統(tǒng)的一個(gè)成熟的商品化產(chǎn)品。通過(guò)Oracle Forms,你可以使用一個(gè)輸出窗體模塊文件的可視化設(shè)計(jì)器創(chuàng)建窗體。為了便于在該設(shè)計(jì)工具外部進(jìn)一步進(jìn)行處理,模塊文件要么采用私有的FMT格式,要么采用XML格式。這些模塊文件驅(qū)動(dòng)一個(gè)描述窗體的Java運(yùn)行時(shí)環(huán)境。除了所有窗體的標(biāo)準(zhǔn)窗口小部件之外,還可以通過(guò)集成附加的可插入的Java組件和一些定制的JavaBean來(lái)實(shí)現(xiàn)更多的功能性。Oracle Forms采用的腳本語(yǔ)言為PL/SQL,Oracle數(shù)據(jù)庫(kù)也采用同樣的腳本語(yǔ)言。Oracle Forms的一個(gè)非常有趣的特點(diǎn)就是,用來(lái)建立、編輯和編譯窗體模塊文件的Java API--開(kāi)發(fā)人員可以通過(guò)創(chuàng)建腳本來(lái)生成眾多的窗體應(yīng)用程序,或者進(jìn)行全局性的改動(dòng)。Oracle Forms的主要缺點(diǎn)是,進(jìn)行Web部署需要獲得Oracle應(yīng)用服務(wù)器的使用許可。它的優(yōu)點(diǎn)是,它可以與Oracle數(shù)據(jù)庫(kù)和Oracle平臺(tái)的其他部分(如Single Sign-On(單一登錄)和Enterprise Manager(企業(yè)管理器))緊密集成,對(duì)國(guó)際化的廣泛支持,以及創(chuàng)建以數(shù)據(jù)為中心應(yīng)用程序的極高效率。
開(kāi)始選擇和使用RIA技術(shù)
這里只討論了可用于創(chuàng)建RIA的技術(shù)中的一些有代表性的例子,還有很多其他的技術(shù)。當(dāng)選擇一項(xiàng)RIA技術(shù)的時(shí)候,你需要權(quán)衡以下幾個(gè)因素:
- 開(kāi)放源產(chǎn)品與商品化產(chǎn)品進(jìn)行對(duì)比;
- 成熟的功能與最新的特性進(jìn)行對(duì)比;
- 輕量級(jí)的功能特性范圍與UI的豐富性進(jìn)行對(duì)比;
- 以媒體為中心的應(yīng)用程序與以數(shù)據(jù)為中心的應(yīng)用程序進(jìn)行對(duì)比;
出處:藍(lán)色理想
責(zé)任編輯:moby
上一頁(yè) RIA和AJAX分析 [1] 下一頁(yè) RIA和AJAX分析 [3]
◎進(jìn)入論壇網(wǎng)站綜合、網(wǎng)頁(yè)制作版塊參加討論
|