You smiled and talked to me of nothing and I felt that for this I had been waiting long.

          The trees come up to my window like the yearning voice of the dumb earth.

          BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
            19 Posts :: 10 Stories :: 25 Comments :: 0 Trackbacks

          作者 Jon Rose譯者 張龍 發(fā)布于 2008年4月25日 上午10時7分(轉(zhuǎn)自InfoQ)

          在這篇新聞中,Adobe的James Ward與InfoQ.com一起為你帶來了Flex的另一種10大(Flex最新的10大)。Flex是一個開源的應(yīng)用開發(fā)框架,用來構(gòu)建運(yùn)行在web(使用 Flash Player)或者桌面上(使用Adobe AIR)的富Internet應(yīng)用。總之,F(xiàn)lex是一個強(qiáng)大易用的框架,但是今天讓我們瞧瞧構(gòu)建Flex應(yīng)用時經(jīng)常犯的錯誤。

          對于Flex新手,請閱讀InfoQ最近的Adobe Flex Basics以對該框架有一個快速的了解。下面是易犯的錯誤列表:

          1. 使用RIA框架去構(gòu)建Web1.0應(yīng)用(新技術(shù)換湯不換藥)。

          從Web 1.0到RIA的過渡中最大的挑戰(zhàn)之一來自思考方式的轉(zhuǎn)變。Flex給予開發(fā)者一個高級的組件庫,使其可以完成很多以前不可能完成的任務(wù)。但是很多時候,F(xiàn)lex的這種能力被忽略了,它僅僅被用來實(shí)現(xiàn)更加傳統(tǒng)的Web 1.0應(yīng)用。

          構(gòu)建Web 2.0應(yīng)用不僅僅意味著頁面的局部刷新和旋轉(zhuǎn)的圓角圖標(biāo)。例如,F(xiàn)lex開發(fā)者應(yīng)使用矢量圖向用戶提供數(shù)據(jù)的可視化表示,以及對于富應(yīng)用流的高級控制。最近Stephan Janssen與InfoQ.com一起討論了該議題

          作為一個Java開發(fā)者,對于面向?qū)ο蟮腁ctionScript和UI標(biāo)記語言的學(xué)習(xí)簡直就是小菜一碟。但是對于(Java)開發(fā)者來說真正的挑戰(zhàn)在于我們不是設(shè)計師,并且這兩個技術(shù)對于RIA來說是必不可少的。

          2. 破壞標(biāo)準(zhǔn)的瀏覽器體驗

          盡管Flex確實(shí)提供了一個優(yōu)秀的平臺以改善用戶體驗,但是保持用戶習(xí)慣,如后退按鈕、書簽和自動完成也是相當(dāng)重要的。

          Flex 3包含了新的深層鏈接特性以支持后退按鈕和書簽。你可以訪問labs.adobe.com來了解更多。那有很多組件能夠?qū)崿F(xiàn)自動完成。你可以使用來自于Adobe Exchange的AutoComplete Input組件。

          3. 使用過多的容器導(dǎo)致應(yīng)用變慢

          Flash Player使用了一個按層次顯示的對象圖,這一點(diǎn)與HTML的文檔對象模型(DOM)很相似。容器嵌套的層次越深,渲染所花費(fèi)的時間就越長。Adobe的Flex開發(fā)者中心有一篇文章討論了關(guān)于Flex性能的最佳實(shí)踐,包括了容器的使用細(xì)節(jié):

          Flex最大的性能風(fēng)險來自于對容器的濫用。嵌套太多的容器會影響應(yīng)用的性能。這是Flex開發(fā)者面臨的最嚴(yán)重的性能風(fēng)險——不過還好,它完全能被避免。

          4. 使用XML而不是其他更優(yōu)化的協(xié)議導(dǎo)致應(yīng)用變慢

          Flex向開發(fā)者提供了多種選擇以在Flex客戶端和服務(wù)器之間進(jìn)行數(shù)據(jù)傳輸,包括AMF3、XML、SOAP及直接的HTTP請求。Ward在他的人口普查應(yīng)用中闡述了這些技術(shù)的使用及性能。

          對于后端使用Java的新項目來說,應(yīng)該考慮一下BlazeDS。BlazeDS是Adobe最近的一個開源數(shù)據(jù)服務(wù)產(chǎn)品,它使用了AMF3協(xié)議。AMF是一個二進(jìn)制傳輸協(xié)議,很容易與Java集成,其性能要優(yōu)于XML。對于所有主要的后端技術(shù)都有相應(yīng)的AMF開源實(shí)現(xiàn)。

          如果你不選擇BlazeDS,那么你還可以選擇Hessian。Hessian對二進(jìn)制的web services協(xié)議提供了ActionScript/Flex支持。

          5. 試圖雇傭Flex開發(fā)者

          現(xiàn)在很難找到有經(jīng)驗的Flex開發(fā)者。Flex現(xiàn)在正處在上世紀(jì)90年代Java所處的位置。Flex開發(fā)者已經(jīng)供不應(yīng)求了。這就造成了難以尋覓 到有經(jīng)驗的Flex開發(fā)者的后果。然而,這給Java開發(fā)者創(chuàng)造了一個很好的機(jī)會以擴(kuò)充技能,并且從事一種新興且有趣的技術(shù)。很多尋找Flex開發(fā)者的公 司直接對Java或者其他web開發(fā)者進(jìn)行幾周的Flex培訓(xùn),并且大獲成功。對于熟悉Web和GUI編程的開發(fā)者來說,學(xué)習(xí)Flex語言和APIs易如 反掌。

          6. 特效的過度使用

          開發(fā)者可以很容易地通過Flash增加特效。但是要確保特效有意義并且與上下文是匹配的。否則他們只會讓用戶反感。特效的時間選擇也很重要。交互設(shè)計器可以幫助我們決定何時應(yīng)使用特效,何時不應(yīng)該使用。交互設(shè)計器還能為我們推薦最佳的特效類型、間隔和最簡化的功能。

          關(guān)于特效的使用在laair.org上有一篇好文:

          大多數(shù)的特效簡直太長了。它們不但長,而且還慢,甚至讓人反感。關(guān)掉它。如果我遇到這種事情的話,我就會轉(zhuǎn)身離去,因為我實(shí)在討厭這種等待。

          千萬不要誤會我,我并不是反對特效。我只是反對為了目的而做的太長或者太過分的特效。每個特效都可以依照其目的進(jìn)行分解。找到你要特效的目的,然后再使用它。

          7. 沒有搭建企業(yè)生態(tài)系統(tǒng)

          就像其他的軟件項目一樣,為于你的Flex應(yīng)用建立企業(yè)生態(tài)系統(tǒng)是非常重要的。

          測試驅(qū)動開發(fā)(TDD)在當(dāng)前是大多數(shù)企業(yè)項目的首選方案。對于Flex來說,FlexUnit框架可用來編寫單元測試。在Adobe的開發(fā)者網(wǎng)絡(luò)上,Neil Webb討論了面向Flex開發(fā)者的TDD及FlexUnit的使用。此外,Flexcover可用來度量代碼覆蓋率。

          當(dāng)多個開發(fā)者協(xié)同工作時,持續(xù)集成(Continuous Integration)被證明是良好的實(shí)踐。與Java應(yīng)用類似,也有相應(yīng)的Ant和Maven插件對你的Flex應(yīng)用進(jìn)行持續(xù)集成。

          8. 沒有使用整個框架

          在Adobe Flex中有大量可選的特性,你應(yīng)該考慮在你的應(yīng)用中使用它們。例如,運(yùn)行時共享庫(Runtime Shared Libraries,即RSL)可用來減少應(yīng)用的大小。

          你可以將共享資源集成到單獨(dú)的文件中,這樣就可以在客戶端單獨(dú)下載和緩存了,通過這種手段可以減少應(yīng)用產(chǎn)生 的SWF文件的大小。很多Flex應(yīng)用可以在運(yùn)行時加載這些共享資源,而每個客戶端只需下載一次即可。這些共享資源叫做運(yùn)行時共享庫(Runtime Shared Libraries)。

          框架的另一個特性是內(nèi)建的輔助功能。你可以通過Adobe在線文檔了解更多的關(guān)于Flex的輔助功能的信息。除了內(nèi)建的輔助功能外,框架還提供了對于本地化的內(nèi)在支持。請訪問Adobe新手上路來了解最新的Flex3框架特性。

          9. 使用復(fù)雜的渲染器降低了DateGrid的速度

          針對DataGrid開箱即用的itemRenderer已經(jīng)有過很好的優(yōu)化了。誤解#3討論了嵌套過深的容器的性能問題。在Flex中有一個地 方很容易造成容器的深層次嵌套,那就是DataGrid的item渲染器。由DataGrid所渲染的item渲染器數(shù)量等于可見的行數(shù)乘以可見的列數(shù)。 定制的DataGrid和List item渲染器應(yīng)該經(jīng)過非常好的優(yōu)化才行。當(dāng)需要在item渲染器中使用復(fù)雜的布局邏輯時,最好使用UIComponent(或者其他底層類)并且手工完 成該單元格內(nèi)容的定位。

          10. 沒有準(zhǔn)備離線應(yīng)用。

          RIAs的傳統(tǒng)模型在于瀏覽器。然而像Adobe AIRGoogle Gears這 樣的技術(shù)使得應(yīng)用可以離線運(yùn)行。如果用戶需要可以離線對應(yīng)用時而你尚未準(zhǔn)備好的話,那將你的應(yīng)用改為支持離線特性將變得異常困難。典型地,在web應(yīng)用 中,業(yè)務(wù)邏輯存在于服務(wù)器端。在離線RIAs中,業(yè)務(wù)邏輯必須轉(zhuǎn)到客戶端。為了使應(yīng)用既支持離線,也支持在線,那就很有必要提前決定某些業(yè)務(wù)邏輯的位置。

          posted on 2008-10-07 09:46 鉤子 閱讀(1473) 評論(2)  編輯  收藏 所屬分類: jeeria

          Feedback

          # re: 構(gòu)建Flex應(yīng)用的10大誤區(qū) 2008-10-08 10:30 程序人生-天津
          這是一篇好文,受教了,里面有好多項目開發(fā)可以借鑒的東西  回復(fù)  更多評論
            

          # re: 構(gòu)建Flex應(yīng)用的10大誤區(qū) 2008-10-08 11:19 鉤子
          @程序人生-天津
          個人覺得還得加上一點(diǎn),對于復(fù)雜的應(yīng)用要采取module組合開發(fā)的形式,否則會造成編譯出來的swf過大,加載過慢的問題。  回復(fù)  更多評論
            

          主站蜘蛛池模板: 绥宁县| 东丽区| 昆明市| 城固县| 肃北| 大同市| 集安市| 龙陵县| 定远县| 八宿县| 留坝县| 和平区| 福海县| 盖州市| 图们市| 平泉县| 苏尼特右旗| 家居| 比如县| 广宁县| 义马市| 伊金霍洛旗| 吐鲁番市| 凤翔县| 宜黄县| 多伦县| 云阳县| 长宁区| 和政县| 漳平市| 长顺县| 壶关县| 婺源县| 沙湾县| 双辽市| 屏南县| 平顶山市| 九寨沟县| 章丘市| 荣成市| 裕民县|