flash已經出現很多年了,其應用大多局限在flash廣告、flash小游戲和flash視頻播放器等方面。在RIA方面的應用卻很罕見,鑒於RIA的廣闊前景,Adobe推出了Flex技術,希望能夠在RIA方面有所作為。不久微軟就推出了Silverlight與之抗衡。由於兩者在技術上的相似性,所以Flex和Silverlight經常被拿來做比較(當然還有html5),這里僅對二者做簡單對比,以便技術路線選擇。
Flex優點:
1.Flex出自Adobe之手,而圖形圖像設計與處理,界面渲染這些都是Adobe的看家本領,自不必說,Flex在界面表現上非常優秀,無人能及。
2.完全實現跨瀏覽器、跨平台。
3.幾乎所有瀏覽器上都安裝了flashPlayer,flashPlayer的普及率是flex的巨大優勢,用戶基本上不會有安裝插件的過程。
Flex缺點:
1.在應用開發領域,Adobe還顯得十分陌生。ActionScript作為處理flash動畫的腳本語言還是不錯的,但是還是很難推動它進入主流程序開發語言,尤其是它及其怪異的語法,完全是Java、C#、Javascript的雜合體,雖然不影響表達邏輯,但真正的相信程序員們都會對此比較困惑。
2.Flex源於Flash技術,Flash在設計上定位於常規html頁面的擴展和補充,能夠方便的嵌入頁面之中,但它對頁面的控制能力很低,在系統級Flex開發上,無法支撐與頁面及瀏覽器的交互性需求!也無法支撐多個Flex之間的交互性需求!
3. Flex Framework 本身存在一些設計缺陷,在設計上和實現上均存在不少bug,為開發帶來極大困擾,降低開發效率。同時Framework高低版本之間無法完全兼容,控件庫不夠完善,Framework成熟度有待進一步提高。
4. 由於Flex實質上采用“客戶端/服務器端”的通信模式,由於缺乏服務器端技術支撐,所以客戶端與服務器端是異構的語言運行環境,因此在數據通信上存在較大局限性,客戶端與服務器端在通信協議、數據格式解析上存在較大開銷,全異步通信模式,在功能上耦合度較低,在數據格式上耦合較高,開發效率低,維護較為困難!
5.Flex被編譯為二進制文件(包括構建界面的mxml),在后期無法對界面做靈活調整,任何修改均需要重新編譯部署。
6. Flex開發環境 FlexBuilder基於Eclipse平台,但在代碼編輯、語法檢查、增量編譯等方面均存在不足,致使開發效率較低。
Silverlight優點:
1.Silverlight基於WPF/E技術,界面表現十分出色,雖然比flex稍稍遜色,但已經完全可以滿足需要。
2.Silverlight秉承了微軟產品家族的一貫風格,編程語言、編輯器、設計器、系統部署調試都提供了集成解決方案,簡單易用。
3.Silverlight使用C#作為開發語言,在瀏覽器中可以與頁面上的html和javascript跨語言無縫互操作,實在很讓人贊嘆!
4.Silverlight可以以二進制或xaml標簽的方式發布,維護上更加方便。
5.在服務器端有強大的技術支撐,在客戶端-服務器端通信方面十分方便。
Silverlight缺點:
1.Silverlight可以跨瀏覽器,但是不能直接跨操作系統平台(有了moonlight,跨平台也不是太大問題)。
2.Silverlight普及率低,一般在應用之前需要下載安裝插件。
3.推出較晚,大規模應用開發還不是很多。
綜上比較可以看出,Flex的優勢基本上在界面表現上,而劣勢主要集中在應用開發上;而Silverlight的優勢在於微軟的強大技術支撐,應用開發十分強大,Flex的缺點在Silverlight這里基本上都成了優點,而Silverlight缺點卻不十分明顯。所以對於程序員來講,二者高下立分,當然在做選擇時也要考慮到已有的技術積累,這也是不可忽略的因素之一。
當然,日后的RIA的主角還是html5,Silverlight會逐漸興起,並在特定領域廣泛應用,flex也會在圖形圖像渲染展示領域長期存在,至於Flex是否能夠續寫Flash的輝煌,個人持悲觀態度。