RIA方案—基于Flash的Flex
Flex簡(jiǎn)介
Macromedia公司被公認(rèn)為新興的RIA市場(chǎng)的領(lǐng)導(dǎo)者。今天98%的瀏覽器上都使用Macromedia Flash客戶端軟件,因此幾乎每個(gè)人都可以使用基于Flash的RIA。Macromedia Flex是Macromedia的新服務(wù)器產(chǎn)品,它使企業(yè)應(yīng)用程序開(kāi)發(fā)人員能夠全面訪問(wèn)RIA的功能。Flex具有基于標(biāo)準(zhǔn)的架構(gòu),與當(dāng)前企業(yè)開(kāi)發(fā)人員的工具、方法和設(shè)計(jì)模式互補(bǔ)。
Flex應(yīng)用程序與傳統(tǒng)的HTML應(yīng)用程序的主要區(qū)別在于Flex應(yīng)用程序處理最適合在客戶端運(yùn)行,如字段校驗(yàn)、數(shù)據(jù)格式、分類、過(guò)濾、工具提示、合成視頻、行為及效果等。Flex 可使開(kāi)發(fā)人員更好地交付應(yīng)用程序,這種應(yīng)用程序使用戶可以迅速反應(yīng)、在不同狀態(tài)與顯示間流暢過(guò)渡,并提供毫無(wú)中斷的連續(xù)的工作流。
Flex 應(yīng)用程序框架
如上圖所示,F(xiàn)lex應(yīng)用程序框架由MXML、ActionScript 2.0及Flex類庫(kù)構(gòu)成。開(kāi)發(fā)人員利用 MXML及ActionScript 2.0編寫Flex應(yīng)用程序。利用MXML定義應(yīng)用程序用戶界面元素,利用ActionScript 2.0定義客戶邏輯與程序控制。Flex類庫(kù)中包括Flex組件、管理器及行為等。利用基于Flex 組件的開(kāi)發(fā)模型,開(kāi)發(fā)人員可在程序中加入預(yù)建的組件、創(chuàng)建新組件或是將預(yù)建的組件加入復(fù)合組件中。
這里重點(diǎn)介紹一下MXML。與HTML一樣,都是標(biāo)記語(yǔ)言,它描述了反映內(nèi)容與功能的用戶界面。與HTML不同的是,MXML 可對(duì)表示層邏輯與用戶界面和服務(wù)器端數(shù)據(jù)綁定提供聲明抽象。MXML可將表示與業(yè)務(wù)邏輯的問(wèn)題徹底分開(kāi),以實(shí)現(xiàn)最大程度地提高開(kāi)發(fā)人員的生產(chǎn)率及應(yīng)用程序的重復(fù)使用率。
Flex的不足
目前Macromedia最新推出了Flex 1.0 Updater,但它代號(hào)為“Brady”的IDE還沒(méi)有正式推出,目前還在進(jìn)行Beta 3測(cè)試。拋開(kāi)IDE不說(shuō),筆者認(rèn)為Flex目前還很不成熟,還不利于在實(shí)際項(xiàng)目中使用。
例如,F(xiàn)lex自帶的ZipCodeValidator,里面只提供了美國(guó)和加拿大的郵編規(guī)則,沒(méi)有其他選擇,也無(wú)法個(gè)性化它。看來(lái)只有自己來(lái)定義Validator了,但這樣一來(lái),和在JS中寫正則表達(dá)式有什么區(qū)別(代碼量和JS差不多)?用戶需要的是國(guó)際化的ZipCodeValidator,這樣才能提高工作效率。
一句話概括
現(xiàn)在的Flex才是1.0版本,很多地方都不完善,只好自定義才能完成特定的要求。期待著Brady以及Flex后續(xù)版本的推出!
RIA方案—基于JS的Bindows
Bindows簡(jiǎn)介
“Bindows把JavaScript發(fā)揮到了第九層!”——網(wǎng)友這樣評(píng)價(jià)Bindows。
運(yùn)行中的Bindows
的確如此,Erik等編寫這個(gè)框架已經(jīng)將JavaScript的OOP和基于IE6的DHTML發(fā)揮到極點(diǎn)!Bindows 0.93發(fā)布的時(shí)候已經(jīng)將IE內(nèi)置的功能開(kāi)發(fā)得淋漓盡致了,包括Filter、XMLHTTP、Web Service、VML。JavaScript用于客戶端界面的顯示和處理,XMLHTTP用于客戶端與服務(wù)器的信息傳輸。JavaScript在客戶端的表現(xiàn)力不容置疑,看看www.bindows.net所表示出來(lái)的能力,利用JavaScript幾乎可以實(shí)現(xiàn)Windows應(yīng)用程序所能干的大部分事情,XMLHTTP一直以來(lái)常被用于實(shí)現(xiàn)“無(wú)刷新”的Web頁(yè)面,它和JavaScript配合,可以完成數(shù)據(jù)從服務(wù)器和客戶端的傳輸。
Bindows的不足
Erik喜歡那種一次全部載入的方式來(lái)實(shí)現(xiàn)腳本庫(kù),使用過(guò)Bindows會(huì)發(fā)現(xiàn),在窗口的加載期,需要一個(gè)漫長(zhǎng)的等待過(guò)程,甚至瀏覽器的進(jìn)程會(huì)產(chǎn)生無(wú)響應(yīng)的情況。按照V0.93,腳本文件的大小是600多K,在一個(gè)普通的Web應(yīng)用中,我們更多時(shí)候不會(huì)用到Bindows的全部功能,這點(diǎn)Bindows根本沒(méi)有遵循“用多少去多少”的準(zhǔn)則。另外,過(guò)多的JS會(huì)使CPU占用率陡然增加,產(chǎn)生潛在問(wèn)題。
內(nèi)部大量利用了IE6的技術(shù),沒(méi)有考慮到非微軟平臺(tái)的瀏覽器,限制了Bindows的流行。在圖表方面,大量采用了VML技術(shù),在IE5,IE5.5這兩個(gè)版本,VML引擎不是那么的成熟,很多地方的顯示不夠流暢,會(huì)受到帶寬和硬件的限制,過(guò)分絢麗的圖形最終會(huì)給用戶帶來(lái)崩潰。“圖形方面我是采用VML的,當(dāng)初太偏執(zhí),如果使用SVG來(lái)實(shí)現(xiàn)可能好許多的,也就是那段日子,我花了非常多的時(shí)間去折騰web方面開(kāi)發(fā)。”——有網(wǎng)友這樣說(shuō)。
一句話概括
在技術(shù)的角度上,從Bindows是可以學(xué)到不少東西的,但好像它的學(xué)術(shù)價(jià)值大于它的商業(yè)價(jià)值。
后 記
興奮歸興奮,冷靜下來(lái)仔細(xì)想想,運(yùn)用RIA改造現(xiàn)有B/S模式還為時(shí)尚早。制約我們的首先是網(wǎng)絡(luò)環(huán)境和硬件環(huán)境的不完善性,我想沒(méi)有哪個(gè)用戶愿意花大量的時(shí)間來(lái)等待想要看見(jiàn)的“花哨”頁(yè)面,更不愿意等來(lái)的東西使自己的機(jī)器不堪重負(fù),而換來(lái)的只是一些良好體驗(yàn)吧?市場(chǎng)決定一切,而不是任何的新技術(shù)!其次,目前RIA的解決方案也不成熟,筆者看好Flex,可惜還需要長(zhǎng)時(shí)間的等待才有結(jié)果。當(dāng)然,還有很多RIA的方案,感覺(jué)MS的Smart Client + Web Service來(lái)頭不小。
本文叫“迎接RIA時(shí)代的來(lái)臨”,筆者充滿了對(duì)RIA的美好憧憬,期待著有一天能夠在RIA的環(huán)境中進(jìn)行虛擬現(xiàn)實(shí)的交互式體驗(yàn)!
鳴 謝:RIA中國(guó) 沒(méi)有他們,我想今天也不會(huì)對(duì)RIA有如此的認(rèn)識(shí)!!!
參考文獻(xiàn):
Flex 白皮書
IDC--RIA白皮書
回歸C/S?解釋Bindows
迎接Client/Server模式的回歸
Flex: RIA 的先驅(qū),無(wú)堅(jiān)不摧的銀彈?
Return of Rich Client
請(qǐng)注意!引用、轉(zhuǎn)貼本文應(yīng)注明原作者:Rosen Jiang 以及出處:http://www.aygfsteel.com/rosen