RIA技術簡介

 1.的定義

  RIA(Rich Internet Application,富互聯網應用系統)技術允許我們在因特網上以一種象使用Web一樣簡單的方式來部署富客戶端程序。這是一個用戶接口,它比用HTML能實現的接口更加健壯、反應更加靈敏和更具有令人感興趣的可視化特性。無論將來RIA是否能夠如人們所猜測的那樣完全代替HTML應用系統,對於那些採用胖客戶端技術運行復雜應用系統的機構來說,RIA確實提供了一種廉價的選擇。


2. RIA的產生背景

  基於HTML的應用程序之所以變得流行是由於應用系統的部署成本低、結構簡單,且HTML易於學習和使用。很多用戶和開發人員都樂於放棄由桌面計算機帶來的用戶界面改進,來實現對新數據和應用系統的快速訪問。與喪失一些重要的UI功能相比,基於Web的方式所帶來的好處要更大得多。

  然而,某些應用系統並不完全適合採用HTML技術。複雜的應用系統可能要求多次提取網頁來完成一項事務處理,在某些領域中,如醫藥和財務領域,這往往導致交互速度低得無法接受。讓我考慮一個項目管理系統:我們可以將其實現爲一個HTML應用系統,但是如果用戶可以看到並且操作圖表、進度表和各種層次結構,那麼顯然會工作得更好。

  此外,雖然HTML開始走向簡單,但是即使簡單的交互活動也仍然需要用很多的腳本來完成。即使一個輸入窗體經過仔細的佈置和全面的腳本設計,它從瀏覽器所能發送的也僅僅是簡單的"名字/值"對。如果一個HTML窗體能夠以XML文檔形式發送和接收更復雜的數據結構,那就好多了。

  RIA利用相對健壯的客戶端描述引擎,這個引擎能夠提供內容密集、響應速度快和圖形豐富的用戶界面。除了提供一個具有各種控件(滑標、日期選擇器、窗口、選項卡、微調控制器和標尺等)的界面之外,RIA一般還允許使用SVG(Scalable Vector Graphics,可伸縮向量圖)或其他技術來隨時構建圖形。一些RIA技術甚至能夠提供全活動的動畫來對數據變化作出響應。

  RIA的另一個好處在於,數據能夠被緩存在客戶端,從而可以實現一個比基於HTML的響應速度更快且數據往返於服務器的次數更少的用戶界面。對於無線設備和需要偶爾連接的設備來說,將來的趨勢肯定是向富客戶端的方向發展,並且會逐漸遠離基於文本的Web客戶端。那些運行在膝上設備上的應用系統,可以被設計成以離線方式工作,或者至少當連接丟失的時候能基本上以離線的方式工作。

 

3.RIA目前的發展態勢及未來預測

在過去的幾年中,Web開發人員一直是想構建一種比傳統HTML更豐富的客戶端:這是一個用戶接口,它比用HTML能實現的接口更加健壯、反應更加靈敏和更具有令人感興趣的可視化特性。RIA技術的出現允許我們在因特網上以一種像使用Web一樣簡單的方式來部署富客戶端程序。無論將來RIA是否能夠如人們所猜測的那樣完全代替HTML應用系統,對於那些採用C/S架構的胖客戶端技術運行復雜應用系統的機構和採用基於B/S架構的瘦客戶端技術部署Web應用系統地機構來說,RIA確實提供了一種廉價的選擇。下面介紹一下目前出現的幾種比較有實力或者有特點的RIA客戶端開發技術:

  1) Macromedia Flash/Flex

  Flash 從6.0開始Flash就逐步具備建立窗體風格的應用程序的功能。據Macromedia稱已經有98%以上的桌面系統的瀏覽器都安裝了 Macromedia Flash Player。這使得以Macromedia Flash Player爲客戶端的RIA可以支持種類廣泛的平臺和設備。

  Flex是爲滿足希望開發 RIA的企業級程序員的需求而推出的表示服務器和應用程序框架,它可以運行於J2EE.NET平臺。Flex表示服務器提供基於標準的、聲明性的編程方法和流程,並提供運行時服務,用於開發和部署豐富客戶端應用程序的表示層。Flex開發者使用直觀的基於XML的MXML來定義豐富的用戶界面。該語言由 Flex服務器翻譯成SWF格式的客戶端應用程序,在Flash Player中運行。

  2) Laszlo
  
  Laszlo 是一個開源的RIA開發環境。使用Laszlo平臺時,開發者只需編寫名爲LZX的描述語言(其中整合了XML和Javascript),運行在J2EE 應用服務器上的Laszlo平臺會將其編譯成SWF格式的文件並傳輸給客戶端展示。從這點上來說,Laszlo的本質和Flex是一樣的。Flash是任何瀏覽器都支持的展示形式,從而一舉解決了瀏覽器之間的移植問題。而且,在未來的計劃中,Laszlo還可以將LZX編譯成Java或.NET本地代碼,從而大大提高運行效率。

  3) Avalon
  
  Microsoft的Avalon是下一版本的 Windows(代號"Longhorn")的一部分,是一個圖形和展示引擎,主要由新加到.NET框架中的一組類集合而成。Avalon定義了一個在 Longhorn中使用的新標記語言,其代號爲"XAML"(可擴展應用程序標記語言)。可以使用XAML來定義文本、圖像和控件的佈局,程序代碼可以直接嵌入到XAML中,也可以將它保留在一個單獨的文件內。這與Flex中的MXML或者Laszlo中的LZX非常相似。不同的是:基於 Avalon的應用程序必須運行在Longhorn環境中,而Flex和Laszlo是不依賴於平臺的,僅僅需要裝有Flash播放器的瀏覽器即可。

  4) Java SWT
  
  Java 已經出現幾年了,並且完全支持創建基於窗體的用戶界面。除了Java基礎類(JFC/Swing)中的用戶界面組件之外,開發人員還可以使用來自於 Eclipse Project的SWT工具箱和許多第三方工具箱進行開發。對於圖形來說,可以採用Java 2D API:一個非常完整且非常複雜的圖形API。你可以通過一個Web瀏覽器使用Java插件軟件,或使用Java運行時環境中較新的Java Web Start技術來部署應用程序。使用Java建立Rich Client的主要缺陷是它的複雜性(即使對簡單的窗體和圖形也要求編寫非常煩瑣的代碼)和Java瀏覽器插件的低市場佔有率。

  5) XUL
  
  XUL (唸作"zool")是一種基於XML的用戶界面語言,它來自於Mozilla的開放源碼項目。它可用於建立窗體應用程序,這些應用程序不但可以在 Mozilla瀏覽器上運行,而且也可以運行在其他描述引擎上,如Zulu(一個Flash MX組件)和Thinleys(一個Java實現)。XUL描述引擎都非常小(100K以下),它可以使用XML數據也可以生成XML數據。XUL的一個主要缺點在於它目前還沒有獲得一個主要商業實體的支持。XUL最大的優點在於它與Gecko引擎的集成(打開了通向大量Web標準的大門),以及與大多數其它XML用戶界面描述語言相比它是一種非常具有表達力和簡潔的語言。

  6) Bindows
  
  Bindow 是用Javascript和DHTML開發的Web窗體框架。Javascript用於客戶端界面的顯示和處理,XMLHTTP用於客戶端與服務器的信息傳輸。Javascript在客戶端的表現力不容置疑,利用Javascript幾乎可以實現Windows應用程序所能幹的大部分事情,XMLHTTP 一直以來常被用於實現"無刷新"的Web頁面,它和 Javascript配合,可以完成數據從服務器和客戶端的傳輸。Bindows的一個主要的缺點是它採用一次全部載入的方式來實現腳本庫,在窗口的加載期,需要一個漫長的等待過程,甚至瀏覽器的進程會產生無響應的情況。這點Bindows根本沒有遵循"用多少去多少"的準則。另外,內部大量利用了IE6 的技術,沒有考慮到非IE的瀏覽器,限制了Bindows的流行。

  2. RIA未來的發展預測

  就目前RIA的使用情況來說,離"RIA時代"還有很遠的一段距離。今後幾年時間內傳統的Web應用程序和RIA將會共存。筆者認爲真正具有實力擔當起普及豐富客戶端應用重任的只有基於Flash Player的Flash/Flex應用程序和Microsoft的基於Avalon的應用程序。短期時間內(估計2-3年時間)可能是 Flash/Flex應用程序在新興的網絡應用程序市場上佔有主導地位。隨着時間的推移,Flash/Flex應用程序的市場佔有率可能會慢慢被基於 Avalon的應用程序所蠶食。當然,Flash Player和Flex以後也會不斷推出新版本,相對於升級操作系統或安裝Avalon運行環境,人們肯定更願意升級Flash Player。Flash/Flex應用程序也有其本身固有的軟肋,Flash Player的執行效率和對本地資源的操作限制是無法和Avalon相比的,相對於瀏覽器中的插件而言,Avalon的應用程序擁有更加廣闊的可操作空間和更高的執行效率。

  目前Microsoft還在推廣一種叫做Smart Client(智能客戶端)的客戶端程序技術,Microsoft稱Smart Client是比Rich Client更優秀的客戶端,因而採用Smart Client的應用程序算不算RIA目前我個人還無法作答。這裏我們之所以提及Smart Client,是因爲Smart Client的特性跟我們談的Rich Client有太多的相似之處。Smart Client擁有自動更新、離線狀態下的數據處理和可以使用本地資源等特徵,其中的可使用本地資源這一項無疑是一大賣點,因爲瀏覽器中的 Flash/Flex應用程序目前還無法操作本地的一些資源,比如Flash/Flex應用程序無法將網上的文件保存到本地或者修改本地文件。雖然 Macromedia的Central1.5已經可以對本地文件進行簡單的操作,並且flex1.5開發的RIA也能夠運行於Central上,但是如何使Central能夠得到大範圍推廣還是個問題。相對於輕量級的Rich Client,Smart Client更接近C/S架構中的客戶端程序。Rich Client和Smart Client的定位還是有所區別的:Rich Client更適合作爲輕量級的基於瀏覽器的網絡應用程序客戶端;Smart Client更適合作爲Windows桌面應用程序的智能客戶端。

  不管我們今天稱之爲的RIA今後會不會成爲主流應用程序,人們對開發具有高度互動性、豐富用戶體驗以及功能強大的客戶端的追求是不變的。有理由相信,擁有成熟技術和極高市場佔有率的Flash客戶端將會在RIA道路上越走越遠。Microsoft未來的重量級武器:Avalon和Smart Client能否後來者居上讓我們拭目以待。

4.RIA目前的發展態勢及未來預測

1.RIA門前的發展態勢

  在過去的幾年中,Web開發人員一直是想構建一種比傳統HTML更豐富的客戶端:這是一個用戶接口,它比用HTML能實現的接口更加健壯、反應更加靈敏和更具有令人感興趣的可視化特性。RIA技術的出現允許我們在因特網上以一種像使用Web一樣簡單的方式來部署富客戶端程序。無論將來RIA是否能夠如人們所猜測的那樣完全代替HTML應用系統,對於那些採用C/S架構的胖客戶端技術運行復雜應用系統的機構和採用基於B/S架構的瘦客戶端技術部署Web應用系統地機構來說,RIA確實提供了一種廉價的選擇。下面介紹一下目前出現的幾種比較有實力或者有特點的RIA客戶端開發技術:

  1) Macromedia Flash/Flex

  Flash 從6.0開始Flash就逐步具備建立窗體風格的應用程序的功能。據Macromedia稱已經有98%以上的桌面系統的瀏覽器都安裝了 Macromedia Flash Player。這使得以Macromedia Flash Player爲客戶端的RIA可以支持種類廣泛的平臺和設備。

  Flex是爲滿足希望開發 RIA的企業級程序員的需求而推出的表示服務器和應用程序框架,它可以運行於J2EE.NET平臺。Flex表示服務器提供基於標準的、聲明性的編程方法和流程,並提供運行時服務,用於開發和部署豐富客戶端應用程序的表示層。Flex開發者使用直觀的基於XML的MXML來定義豐富的用戶界面。該語言由 Flex服務器翻譯成SWF格式的客戶端應用程序,在Flash Player中運行。

  2) Laszlo
  
  Laszlo 是一個開源的RIA開發環境。使用Laszlo平臺時,開發者只需編寫名爲LZX的描述語言(其中整合了XML和Javascript),運行在J2EE 應用服務器上的Laszlo平臺會將其編譯成SWF格式的文件並傳輸給客戶端展示。從這點上來說,Laszlo的本質和Flex是一樣的。Flash是任何瀏覽器都支持的展示形式,從而一舉解決了瀏覽器之間的移植問題。而且,在未來的計劃中,Laszlo還可以將LZX編譯成Java或.NET本地代碼,從而大大提高運行效率。

  3) Avalon
  
  Microsoft的Avalon是下一版本的 Windows(代號"Longhorn")的一部分,是一個圖形和展示引擎,主要由新加到.NET框架中的一組類集合而成。Avalon定義了一個在 Longhorn中使用的新標記語言,其代號爲"XAML"(可擴展應用程序標記語言)。可以使用XAML來定義文本、圖像和控件的佈局,程序代碼可以直接嵌入到XAML中,也可以將它保留在一個單獨的文件內。這與Flex中的MXML或者Laszlo中的LZX非常相似。不同的是:基於 Avalon的應用程序必須運行在Longhorn環境中,而Flex和Laszlo是不依賴於平臺的,僅僅需要裝有Flash播放器的瀏覽器即可。

  4) Java SWT
  
  Java 已經出現幾年了,並且完全支持創建基於窗體的用戶界面。除了Java基礎類(JFC/Swing)中的用戶界面組件之外,開發人員還可以使用來自於 Eclipse Project的SWT工具箱和許多第三方工具箱進行開發。對於圖形來說,可以採用Java 2D API:一個非常完整且非常複雜的圖形API。你可以通過一個Web瀏覽器使用Java插件軟件,或使用Java運行時環境中較新的Java Web Start技術來部署應用程序。使用Java建立Rich Client的主要缺陷是它的複雜性(即使對簡單的窗體和圖形也要求編寫非常煩瑣的代碼)和Java瀏覽器插件的低市場佔有率。

  5) XUL
  
  XUL (唸作"zool")是一種基於XML的用戶界面語言,它來自於Mozilla的開放源碼項目。它可用於建立窗體應用程序,這些應用程序不但可以在 Mozilla瀏覽器上運行,而且也可以運行在其他描述引擎上,如Zulu(一個Flash MX組件)和Thinleys(一個Java實現)。XUL描述引擎都非常小(100K以下),它可以使用XML數據也可以生成XML數據。XUL的一個主要缺點在於它目前還沒有獲得一個主要商業實體的支持。XUL最大的優點在於它與Gecko引擎的集成(打開了通向大量Web標準的大門),以及與大多數其它XML用戶界面描述語言相比它是一種非常具有表達力和簡潔的語言。

  6) Bindows
  
  Bindow 是用Javascript和DHTML開發的Web窗體框架。Javascript用於客戶端界面的顯示和處理,XMLHTTP用於客戶端與服務器的信息傳輸。Javascript在客戶端的表現力不容置疑,利用Javascript幾乎可以實現Windows應用程序所能幹的大部分事情,XMLHTTP 一直以來常被用於實現"無刷新"的Web頁面,它和 Javascript配合,可以完成數據從服務器和客戶端的傳輸。Bindows的一個主要的缺點是它採用一次全部載入的方式來實現腳本庫,在窗口的加載期,需要一個漫長的等待過程,甚至瀏覽器的進程會產生無響應的情況。這點Bindows根本沒有遵循"用多少去多少"的準則。另外,內部大量利用了IE6 的技術,沒有考慮到非IE的瀏覽器,限制了Bindows的流行。

  2. RIA未來的發展預測

  就目前RIA的使用情況來說,離"RIA時代"還有很遠的一段距離。今後幾年時間內傳統的Web應用程序和RIA將會共存。筆者認爲真正具有實力擔當起普及豐富客戶端應用重任的只有基於Flash Player的Flash/Flex應用程序和Microsoft的基於Avalon的應用程序。短期時間內(估計2-3年時間)可能是 Flash/Flex應用程序在新興的網絡應用程序市場上佔有主導地位。隨着時間的推移,Flash/Flex應用程序的市場佔有率可能會慢慢被基於 Avalon的應用程序所蠶食。當然,Flash Player和Flex以後也會不斷推出新版本,相對於升級操作系統或安裝Avalon運行環境,人們肯定更願意升級Flash Player。Flash/Flex應用程序也有其本身固有的軟肋,Flash Player的執行效率和對本地資源的操作限制是無法和Avalon相比的,相對於瀏覽器中的插件而言,Avalon的應用程序擁有更加廣闊的可操作空間和更高的執行效率。

  目前Microsoft還在推廣一種叫做Smart Client(智能客戶端)的客戶端程序技術,Microsoft稱Smart Client是比Rich Client更優秀的客戶端,因而採用Smart Client的應用程序算不算RIA目前我個人還無法作答。這裏我們之所以提及Smart Client,是因爲Smart Client的特性跟我們談的Rich Client有太多的相似之處。Smart Client擁有自動更新、離線狀態下的數據處理和可以使用本地資源等特徵,其中的可使用本地資源這一項無疑是一大賣點,因爲瀏覽器中的 Flash/Flex應用程序目前還無法操作本地的一些資源,比如Flash/Flex應用程序無法將網上的文件保存到本地或者修改本地文件。雖然 Macromedia的Central1.5已經可以對本地文件進行簡單的操作,並且flex1.5開發的RIA也能夠運行於Central上,但是如何使Central能夠得到大範圍推廣還是個問題。相對於輕量級的Rich Client,Smart Client更接近C/S架構中的客戶端程序。Rich Client和Smart Client的定位還是有所區別的:Rich Client更適合作爲輕量級的基於瀏覽器的網絡應用程序客戶端;Smart Client更適合作爲Windows桌面應用程序的智能客戶端。

  不管我們今天稱之爲的RIA今後會不會成爲主流應用程序,人們對開發具有高度互動性、豐富用戶體驗以及功能強大的客戶端的追求是不變的。有理由相信,擁有成熟技術和極高市場佔有率的Flash客戶端將會在RIA道路上越走越遠。Microsoft未來的重量級武器:Avalon和Smart Client能否後來者居上讓我們拭目以待。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章