Rich Internet Application(富互聯網應用程序,簡稱RIA),一種全新的Web應用程序架構,它結合了桌面軟件良好的用戶體驗和web應用程序易部署的優勢,很快得到了企業的青睞。 近年來,各大開發平臺供應商相繼推出新的技術來支持RIA的開發,從Ajax到SilverLight,從Apollo和AIR到Flex和Flash,從JavaFX到Laszlo,各類技術粉墨登臺,以期成爲你們關注的焦點。web
然而,做爲應用系統開發廠商,開發團隊和開發者,在RIA大潮中,選擇什麼樣的技術,讓本身更好地構建RIA系統,成爲一個咱們須要仔細考慮的問題。編程
AJAX瀏覽器
Ajax其實是用新的技巧把一些古老技術結合在一塊兒使用,從而讓Web Application用戶界面的交互性獲得極大的提高。安全
在Ajax中,XMLHttpRequest是核心,是Ajax強大功能的來源,Ajax和傳統的Web界面技術區別也就在此。經過XMLHttpRequest,就把瀏覽器中的HTML(DHTML)和服務器端的數據分離開。利用JavaScript來操縱客戶端訪問服務器獲取數據,並修改HTML結構,以顯示數據。使用Ajax的經典例子就是Gmail和Google Maps了。服務器
Flash/Flex/Laszlo網絡
Flex是爲知足企業級應用而推出的應用程序框架。Flex提供基於標準的、聲明性的編程方法和流程,用於開發和部署豐富客戶端應用程序的表示層。Flex開發者使用直觀的、基於XML的MXML來定義豐富的用戶界面,利用ActionScript(一種面向對象的腳本語言)來編寫程序邏輯。架構
該語言由 Flex服務器翻譯成SWF格式的客戶端應用程序,在Flash Player中運行。目前Flex已經發布了Flex 3.0 beta。框架
Laszlo是一個開源的RIA開發環境。使用Laszlo平臺時,開發者只需編寫名爲LZX的描述語言(其中整合了XML和JavaScript),運行在J2EE 應用服務器上的Laszlo平臺會將其編譯成swf格式的文件並傳輸給客戶端展現。在將來的計劃中,Laszlo還能夠將LZX編譯成Java或 .NET本地代碼,從而大大提升運行效率。在最新發布的Laszlo 4.0中,開發人員能夠選擇Laszlo最終顯示爲Flash仍是DHTML。eclipse
Flex和Laszlo從運行位置來看,他們都屬於服務器端技術,和你們熟悉的ASP,ASP.NET,JSP和PHP的運行機制相似。只是ASP等動態網頁技術,是把界面元素解析爲HTML發送給客戶端的瀏覽器來展示;而Flex和Laszlo是把界面元素解析爲二進制的swf文件,運行到瀏覽器中的Flash Player插件裏。工具
AIR
AIR以前稱爲Apollo,Adobe官方的解釋爲:是一個跨操做系統的運行環境,容許開發人員使用之前Web開發的技能來建立Rich Internet Application,並部署到桌面上運行。整體來講,AIR就是Adobe 把現有的技術,如:Flash、PDF、JavaScript、XML和ActionScript集成在一塊兒,並提供一個客戶端運行環境,可讓開發人員開發能夠訪問Internet資源的桌面程序。本質上,AIR就是讓Flash(或者Ajax)脫離瀏覽器運行的一個桌面應用程序運行環境。
要開發AIR應用程序,也很簡單,有兩種技術可供選擇:一,使用HTML+JS技術;二,使用Flex+Flash。可以使用的開發工具也就是開發上述技術的工具,如:flex builder、 flash IDE、eclipse、notepad 等等。
使用AIR來開發RIA的優缺點和Flex等相似,最大的好處就是:能夠脫離瀏覽器成爲一個獨立的桌面程序而運行,而且不受瀏覽器安全限制,能夠有更多的權限訪問本地資源。
目前,AIR還在測試階段,不少功能還不完善,相信等正式版發佈後,會有更多特性值得咱們期待。
WPF
一直以來,應用程序的用戶界面均可以用不一樣的技術開發,從MFC到VB,從Windows Forms到HTML+JS。對於開發人員來講,這就須要針對不一樣的應用程序類型,使用不一樣界面開發技術。隨着Flash等多媒體2D或者3D界面的出現,選擇就愈來愈多。若是想使用一種技術就能開發各種應用程序的界面,這將是一個巨大的挑戰。
Windows Presentation Foundation (WPF),最初代號爲「Avalon」,目前做爲 .NET 3.0的一個組件發佈,就是爲解決這一難題而設計。
WPF 爲桌面客戶端和瀏覽器客戶端提供了通用基礎,大大簡化了兩者的應用程序開發工做。WPF 採用更爲現代的方法,支持視頻、動畫、2D或3D圖形以及各類類型的文檔,從而可讓用戶以全新的方式處理信息。此外,WPF 還爲桌面客戶端和瀏覽器客戶端提供了通用基礎,大大簡化了兩者的應用程序開發工做。
做爲微軟的下一代界面技術,WPF的最大特色就是把界面的佈局描述和界面邏輯代碼分離。WPF經過XAML(擴展應用程序標記語言,一種基於 XML 的語言,容許以聲明方式指定用戶界面,而非代碼)把專業界面設計人員的工做和專業的程序開發人員的工做分開,讓他們更容易協做,以開發出界面炫麗,功能強大的應用程序。
同時微軟爲不一樣的工做提供了不一樣的工具,針對界面設計人員,推出Expression Studio;針對程序開發人員,推出Visual Studio 2008(有望今年年末發佈RTM)。
經過提供更強大的圖形支持功能,WPF 使得一系列數據可視化成爲可能,而這依靠 Windows Forms 或其餘的早期技術是不可能實現的。WPF 還提供了 XML Paper Specification (XPS) 的基礎,可定義查看、分發和打印固定格式文檔的標準格式。
Silverlight
Silverlight最初的代號叫「WPF/E」,意爲WPF run on Everywhere,它是WPF的一個子集。Silverlight被社區稱爲微軟出品的Flash Killer。
官方對其的定義是:「Silverlight是一個跨瀏覽器的、跨平臺的插件,爲網絡帶來下一代基於.NET的媒體體驗和豐富的交互式應用程序」。Silverlight提供靈活的編程模型,支持AJAX, VB, C#, Python, Ruby等語言,並集成到現有的Web Application中,可以訪問其中的DOM信息。內置多媒體技術的支持,能夠以很低的成本播放媒體文件。
目前,Silverlight發佈了兩個版本, 1.0 beta和1.1 alpha。能夠運行於Windows和Mac平臺下。同時Mono項目也在積極的開發Moonlight,一個在Linux下的Silverlight實現。
XUL
XUL 是一種基於XML的用戶界面語言,它來自於Mozilla的開放源碼項目。它可用於創建窗體應用程序,這些應用程序不但能夠在 Mozilla瀏覽器上運行,並且也能夠運行在其餘描述引擎上,如Zulu(一個Flash MX組件)和Thinleys(一個Java實現)。XUL描述引擎都很是小(100K如下),它可使用XML數據也能夠生成XML數據。XUL的一個主要缺點在於它目前尚未得到一個主要商業實體的支持。XUL最大的優勢在於它與Gecko引擎的集成(打開了通向大量Web標準的大門),以及與大多數其它XML用戶界面描述語言相比,它是一種很是具備表達力和簡潔的語言。
目前XUL能夠嵌入在Mozilla(或FireFox)瀏覽器中運行,也能夠經過一個XUL Runner的運行環境,脫離瀏覽器運行。
JavaFX
「JavaFX是一個構建於Java技術之上完整的運行環境,能夠用來交付到桌面、移動設備、手持設備和電視等環境的富互聯網應用(RIA)。」SUN如此定義JavaFX。JavaFX是SUN進入RIA領域的開發技術,它包含JavaFX Script和JavaFX Mobile兩個部分,使用一種全新的腳本語言,依賴Java SE/ME運行時,利用Java2D和Swing API來實如今桌面或者移動設備上運行RIA應用。
三類RIA技術比較
經過上面各類RIA開發技術介紹,咱們能夠看到它們各自的理念有所不一樣,運行的環境也不盡相同。整體說來,RIA開發技術分爲三類:
1. 瀏覽器類,整個RIA是運行於瀏覽器裏面,依靠傳統的HTML+CSS+JavaScript技術來實現界面的表現和控制。
2. 瀏覽器插件類,RIA經過插件的方式運行於瀏覽器中。正在運行的程序是廠商特定的運行格式,須要特定的運行環境。
3. 桌面類,RIA脫離瀏覽器直接運行於桌面之上。和常見的桌面程序很相似,可是能夠訪問Internet資源,並具備部署容易,更新簡單的特色。
在三種分類的技術中,瀏覽器技術是成爲開發RIA最直接的技術,此類技術適合一直在作Web應用的軟件開發商。
新型桌面技術則徹底另起爐竈,充分使用桌面開發的技術、技巧和理念,並結合Web Application部署方便,即時安裝的優勢。此類技術適合作Windows應用的開發商。
瀏覽器插件則在瀏覽器技術和新型桌面之間進行了折衷,既使用新的技術來實現豐富的界面,又能和現有的Web技術進行部分的集成。
哪一種RIA技術適合你
RIA是將來應用系統開發的一個重要方向,不少軟件開發企業,開發團隊和開發人員都但願在將來找到一個適合本身的技術,從而讓本身事半功倍,在提升開發效率,下降開發成本的同時,又能交付給客戶體驗豐富、功能完善的軟件系統。
雖然在上面咱們介紹了各類技術及其優缺點,並對他們進行了一個歸類,可是要回答「咱們該選擇那種」這個問題,還須要考慮下面的狀況?
首先是咱們自身的狀況:
◆ 目前你的技術能力主要在Web開發方面仍是Windows開發方面?
◆ 目前你開發的應用程序功能類型是內容展示爲主仍是事務處理爲主?
◆ 目前主要在使用那個廠商或組織的技術?.NET 或者JAVA 或者其餘Web技術?
◆ 目前是否在進行RIA或者相似RIA的開發?
◆ 目前在使用那種RIA開發技術?
其次是考慮技術的選擇標準:
◆ 學習成本,開發效率
◆ 對應用程序類型的適合性
◆ 運行環境部署成本
◆ 運行效率
◆ 完善的功能特性
◆ 技術受權成本和服務器部署成本,開源、免費或收費
◆ 官方和社區的技術支持
◆ 完善的開發工具
◆ 完善的UI組件
◆ 跨平臺特性
最後,咱們根據本身的具體狀況和選擇技術的標準,能夠爲對這些技術進行一個定位和排序。
以技術運行環境部署成原本比較(由低到高):
Ajax > Flex/Laszlo > Silverlight > XUL > WPF > AIR > JavaFX
以技術受權成原本看:
開源的有:Ajax,Laszlo,XUL,JavaFX
免費的有:Silverlight,WPF,AIR
收費的有:Flex
從技術支持來看:無疑Silverlight和WPF會得到最好的官方支持,Flex的官方技術也在改善,其餘技術主要依靠社區的支持。
就開發工具來看:Silverlight和WPF能夠有最強大的工具使用,Flex、AIR和Laszlo也有優秀的IDE可供使用,JavaFX的開發工具還沒有明朗,Ajax要看具體的實現而定,XUL的開發工具進展緩慢。
就可以使用UI組件的狀況來看:WPF和Silverlight須要本身擴展或者使用第三方的;Flex、AIR和Laszlo都提供了豐富的UI組件,XUL本身有一套基本夠用的UI組件,JavaFX依賴JRE自帶的UI工具箱。
對於跨平臺特性和兼容性咱們也能夠獲得一個排序:
Flex/Laszlo > Ajax > XUL > JavaFX > AIR > Silverlight > WPF
總而言之,要選擇一種適合本身的RIA開發技術,須要從各個方面來權衡。不只要明確本身的狀況,考慮將來的需求,也要熟悉每種技術的差別和優缺點,這樣才能找到一種正確的技術。
表1 Ajax的優缺點
表2 Flex的優缺點
表3 Laszlo的優缺點
表4 WPF的優缺點
表5 Silverlight的優缺點
表6 XUL的優缺點
表7 JavaFX的優缺點
表8 RIA技術的整體分類
表9 不一樣技術能力的開發商在各類技術上的學習成本
表10 各類技術在不一樣應用類型上的適應性
表11 各類技術在不一樣平臺類型上的適應性