AJAX與RIA技術之我見

 DHH於6月底曾經發表過一篇文章,名爲《我就喜歡HTML/CSS/JavaScript,那又怎麼樣!》,大意是說,目前熱炒的RIA技術並不能夠取代AJAX技術,而事實上我們還沒有發揮出HTML的全部潛力,我本人很享受HTML/CSS/JS給給我的開發體驗云云。

我比較贊成DHH的觀點,從另外一些角度談談我對RIA技術,主要是Flex的看法。

我在2004年曾經指導一個企業應用系統的開發,這個系統提出了比較高的實時反饋和交互式要求。由於同時有兩個flash高手加盟,我們決定採取基於flash的RIA技術:

對於交互要求非常高的部分使用flash開發,flash通過AMF協議和服務器端通訊,服務器端使用了OpenAMF這個開源框架,可以解析AMF請求,轉化爲對Spring bean的調用,這個架構是一個標準的分佈式系統調用:

flash <-----AMF-----> OpenAMF網關 <--> Spring Ioc

和現在很多人普遍採用的AJAX DWR框架是一個道理:

IE <-----XHR-----> DWR <--> Spring Ioc

客戶端的flash是先用Flash IDE畫好界面元素,保存爲fla文件,然後程序員使用ActionScript編寫代碼,和服務器端進行交互。這是一個標準的基於Flash的RIA方案,但是項目最終放棄了Flash RIA。

時至今日,REST+Flex又被作爲一個非常熱門的方案被提出來了,那麼REST+Flex比2004年我們採用的AMF+Flash方案有什麼區別呢?

一、服務器端和客戶端交換數據的方式不同

1、AMF+Flash採用的是標準的RPC方式,這種方式的被廣泛的使用在EJB,XML-RPC,DWR等等,這種方式的缺點這裏不贅述了,JavaEye以前有大量的討論

2、REST+Flex採用的是REST方法,這種方式是現在非常熱門的輕量級分佈式系統解決方案之一,優點也不贅述了,JavaEye也有大量討論

二、客戶端描述界面的方式不同

1、AMF+Flash採用標準的Flash IDE來畫界面,保存爲fla後綴的二進制文件,界面文件不可直接用文本編輯器編輯,一般程序員很難使用。

2、REST+Flex採用Flex Builder來畫界面,或者用文本編輯器手工編寫MXML,這是一種帶有namespace的XML的文件,程序員比較容易使用。

通過比較我們可以發現,REST+Flex的方案已經前進了一大步,但是我還沒有提到爲什麼2004年那個Flash RIA方案會失敗,爲什麼呢?失敗的最重大的原因在於開發成本!

你會說,我們用AJAX開發成本也很高阿,HTML/CSS/JS跨瀏覽器兼容性的成本非常高。Flash不用考慮跨瀏覽器,界面還可以用IDE直接畫,AS代碼和MXML界面徹底分離,多棒的MVC,開發效率怎麼想都比AJAX低很多。不錯,Flash沒有跨瀏覽器開發成本,但是Flash有一個巨大的和網頁交互的成本。

這又牽扯出來一個更深層次的問題:互聯網傳播的主要載體是什麼?文本?圖片?視頻?還是其他的什麼?

HTML的誕生是適應於互聯網大量文本內容的傳播的,只要你的web應用還是以文本爲主,就必須以HTML爲主,這一點無法改變。那麼就意味着你的Flash RIA必須要大量的和HTML頁面進行交互。(也有一些純網絡遊戲或者休閒遊戲網站是純flash的,幾乎沒有HTML,但這不是我們討論之列)

所以問題就在於Flash和網頁的大量交互,但很遺憾的是Flash操縱網頁DOM的能力很弱,與傳統的JavaScript無法相提並論!所以你會遇到各種意想不到的問題,而這些問題原本用JavaScript卻是很簡單的事情,例如驅動網頁導航,刷新,打開關閉窗口,DIV隱藏顯示等等,開發成本就是這麼不知不覺升上來的。最終你會發現Flash的開發成本太高!

其實這不能怪Flash,根源在於:你開發的web應用最終還是一個基於文本形式的,所以你就無法使用純Flash應用(Flash對於文本支持能力又很弱),必須大量依賴HTML;而要大量操縱HTML,最趁手的工具就是JavaScript,而Flash就是一個很蹩腳的工具,無論它的多媒體表現能力多麼強大。

SilverLight能改變這一點嗎?不能!Microsoft發明XMLHTTP絕對是天才的創意,XMLHTTP之所以成功根本原因在於它和HTML的良好交互性,而且使用JS操縱。SilverLight只是Flash的一個模仿品,卻完全沒有看到Flash的侷限性在哪裏?所以SilverLight完全繼承了Flash的致命缺點。這也只能說明SilverLight是Microsoft商業競爭的一種手段,而不是本着創新精神去做的東西。

現在開發AJAX的確有其痛苦之處,跨瀏覽器兼容性是最讓人頭疼的。但是我們應該清楚,只要web應該是基於文本形式這一點不改變,那麼HTML/JS的地位就不會改變,那麼AJAX無論如果都是web開發之首選技術。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章