Rich Internet Application(富互連網應用程式,簡稱RIA),一種全新的Web應用程式架構,它結合了案頭軟體良好的使用者體驗和web應用程式易部署的優點,很快獲得了企業的青睞。近年來,各大開發平台供應商相繼推出新的技術來支援RIA的開發,從Ajax到SilverLight,從Apollo和AIR到Flex和Flash,從JavaFX到Laszlo,各種技術粉墨登台,以期成為大家關注的焦點。
然而,作為應用系統開發廠商,Team Dev和開發人員,在RIA大潮中,選擇什麼樣的技術,讓自己更好地構建RIA系統,成為一個我們需要仔細考慮的問題。
AJAX
Ajax實際上是用新的技巧把一些古老技術結合在一起使用,從而讓WebApplication使用者介面的互動性得到極大的提升。
在Ajax中,XMLHttpRequest是核心,是Ajax強大功能的來源,Ajax和傳統的Web介面技術區別也就在此。通過XMLHttpRequest,就把瀏覽器中的HTML(DHTML)和伺服器端的資料分離開。利用JavaScript來操縱Client Access Server擷取資料,並修改HTML結構,以顯示資料。使用Ajax的經典例子就是Gmail和GoogleMaps了。
Flash/Flex/Laszlo
Flex是為滿足企業級應用而推出的應用程式架構。Flex提供基於標準的、聲明性的編程方法和流程,用於開發和部署豐富用戶端應用程式的展示層。Flex開發人員使用直觀的、基於XML的MXML來定義豐富的使用者介面,利用ActionScript(一種物件導向的指令碼語言)來編寫程式邏輯。
該語言由 Flex伺服器翻譯成SWF格式的用戶端應用程式,在FlashPlayer中運行。目前Flex已經發布了Flex 3.0 beta。
Laszlo是一個開源的RIA開發環境。使用Laszlo平台時,開發人員只需編寫名為LZX的描述語言(其中整合了XML和JavaScript),運行在J2EE應用伺服器上的Laszlo平台會將其編譯成swf格式的檔案並傳輸給用戶端展示。在未來的計劃中,Laszlo還可以將LZX編譯成Java或.NET本地代碼,從而大大提高運行效率。在最新發行的Laszlo4.0中,開發人員可以選擇Laszlo最終顯示為Flash還是DHTML。
Flex和Laszlo從運行位置來看,他們都屬於伺服器端技術,和大家熟悉的ASP,ASP.NET,JSP和PHP的運行機制類似。只是ASP等動態網頁技術,是把介面元素解析為HTML發送給用戶端的瀏覽器來展現;而Flex和Laszlo是把介面元素解析為二進位的swf檔案,運行到瀏覽器中的FlashPlayer外掛程式裡。
AIR
AIR之前稱為Apollo,Adobe官方的解釋為:是一個跨作業系統的運行環境,允許開發人員使用以前Web開發的技能來建立RichInternet Application,並部署到案頭上運行。總體來說,AIR就是Adobe把現有的技術,如:Flash、PDF、JavaScript、XML和ActionScript整合在一起,並提供一個用戶端運行環境,可以讓開發人員開發可以訪問Internet資源的傳統型程式。本質上,AIR就是讓Flash(或者Ajax)瀏覽器外用啟動並執行一個傳統型應用程式運行環境。
要開發AIR應用程式,也很簡單,有兩種技術可供選擇:一,使用HTML+JS技術;二,使用Flex+Flash。可使用的開發工具也就是開發上述技術的工具,如:flexbuilder、 flash IDE、eclipse、notepad 等等。
使用AIR來開發RIA的優缺點和Flex等類似,最大的好處就是:可以瀏覽器外用成為一個獨立的傳統型程式而運行,並且不受瀏覽器安全限制,可以有更多的許可權訪問本地資源。
目前,AIR還在測試階段,很多功能還不完善,相信等正式版發布後,會有更多特性值得我們期待。
WPF
一直以來,應用程式的使用者介面都可以用不同的技術開發,從MFC到VB,從WindowsForms到HTML+JS。對於開發人員來說,這就需要針對不同的應用程式類型,使用不同介面開發技術。隨著Flash等多媒體2D或者3D介面的出現,選擇就越來越多。如果想使用一種技術就能開發各類應用程式的介面,這將是一個巨大的挑戰。
Windows Presentation Foundation(WPF),最初代號為“Avalon”,目前作為 .NET 3.0的一個組件發布,就是為解決這一難題而設計。
WPF為案頭用戶端和瀏覽器用戶端提供了通用基礎,大大簡化了二者的應用程式開發工作。WPF採用更為現代的方法,可使用視訊、動畫、2D或3D圖形以及各種類型的文檔,從而可以讓使用者以全新的方式處理資訊。此外,WPF還為案頭用戶端和瀏覽器用戶端提供了通用基礎,大大簡化了二者的應用程式開發工作。
作為微軟的下一代介面技術,WPF的最大特點就是把介面的布局描述和介面邏輯代碼分離。WPF通過XAML(擴充應用程式標記語言,一種基於XML的語言,允許以聲明方式指定使用者介面,而非代碼)把專業介面設計人員的工作和專業的程式開發人員的工作分開,讓他們更容易協作,以開發出介面炫麗,功能強大的應用程式。
同時微軟為不同的工作提供了不同的工具,針對介面設計人員,推出Expression Studio;針對程式開發人員,推出VisualStudio 2008(有望今年年底發布RTM)。
通過提供更強大的圖形支援功能,WPF 使得一系列資料視覺效果成為可能,而這依靠Windows Forms 或其他的早期技術是不可能實現的。WPF 還提供了 XML Paper Specification(XPS) 的基礎,可定義查看、分發和列印固定格式文檔的標準格式。
Silverlight
Silverlight最初的代號叫“WPF/E”,意為WPF run onEverywhere,它是WPF的一個子集。Silverlight被社區稱為微軟出品的Flash Killer。
官方對其的定義是:“Silverlight是一個跨瀏覽器的、跨平台的外掛程式,為網路帶來下一代基於.NET的媒體體驗和豐富的互動式應用程式”。Silverlight提供靈活的編程模型,支援AJAX,VB, C#, Python, Ruby等語言,並整合到現有的WebApplication中,能夠訪問其中的DOM資訊。內建多媒體技術的支援,可以以很低的成本播放媒體檔案。
目前,Silverlight發布了兩個版本, 1.0 beta和1.1alpha。可以運行於Windows和Mac平台下。同時Mono項目也在積極的開發Moonlight,一個在Linux下的Silverlight實現。
XUL
XUL是一種基於XML的使用者介面語言,它來自於Mozilla的開放源碼項目。它可用於建立表單應用程式,這些應用程式不但可以在Mozilla瀏覽器上運行,而且也可以運行在其他描述引擎上,如Zulu(一個FlashMX組件)和Thinleys(一個Java實現)。XUL描述引擎都非常小(100K以下),它可以使用XML資料也可以產生XML資料。XUL的一個主要缺點在於它目前還沒有獲得一個主要商業實體的支援。XUL最大的優點在於它與Gecko引擎的整合(開啟了通向大量Web標準的大門),以及與大多數其它XML使用者介面描述語言相比,它是一種非常具有表達力和簡潔的語言。
目前XUL可以嵌入在Mozilla(或FireFox)瀏覽器中運行,也可以通過一個XULRunner的運行環境,瀏覽器外用運行。
JavaFX
“JavaFX是一個構建於Java技術之上完整的運行環境,可以用來交付到案頭、行動裝置、手持功能和電視等環境的富互連網應用(RIA)。”SUN如此定義JavaFX。JavaFX是SUN進入RIA領域的開發技術,它包含JavaFXScript和JavaFX Mobile兩個部分,使用一種全新的指令碼語言,依賴Java SE/ME運行時,利用Java2D和SwingAPI來實現在案頭或者行動裝置上運行RIA應用。
三類RIA技術比較
通過上面各種RIA開發技術介紹,我們可以看到它們各自的理念有所不同,啟動並執行環境也不盡相同。總體說來,RIA開發技術分為三類:
1.瀏覽器類,整個RIA是運行於瀏覽器裡面,依靠傳統的HTML+CSS+JavaScript技術來實現介面的表現和控制。
2.瀏覽器外掛程式類,RIA通過外掛程式的方式運行於瀏覽器中。正在啟動並執行程式是廠商特定的運行格式,需要特定的運行環境。
3.案頭類,RIA瀏覽器外用直接運行於案頭之上。和常見的傳統型程式很類似,但是可以訪問Internet資源,並具有部署容易,更新簡單的特點。
在三種分類的技術中,瀏覽器技術是成為開發RIA最直接的技術,此類技術適合一直在做Web應用的軟體開發商。
新型案頭技術則完全另起爐灶,充分使用案頭開發的技術、技巧和理念,並結合WebApplication部署方便,即時安裝的優點。此類技術適合做Windows應用的開發商。
瀏覽器外掛程式則在瀏覽器技術和新型案頭之間進行了折衷,既使用新的技術來實現豐富的介面,又能和現有的Web技術進行部分的整合。
哪種RIA技術適合你
RIA是未來應用系統開發的一個重要方向,很多軟體開發企業,Team Dev和開發人員都希望在未來找到一個適合自己的技術,從而讓自己事半功倍,在提高開發效率,降低開發成本的同時,又能交付給客戶體驗豐富、功能完善的軟體系統。
雖然在上面我們介紹了各種技術及其優缺點,並對他們進行了一個歸類,但是要回答“我們該選擇那種”這個問題,還需要考慮下面的情況?
首先是我們自身的情況:
◆ 目前你的技術能力主要在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開發技術,需要從各個方面來權衡。不僅要明確自己的情況,考慮未來的需求,也要熟悉每種技術的差異和優缺點,這樣才能找到一種正確的技術。