??? 摘? 要: 對現今流行的富互聯網應用(RIA)進行了研究,介紹了RIA的概念、RIA產生的背景、RIA的特點以及所能解決的問題。列出了現有的主流RIA實現技術并分析了各自的特點。介紹了RIA的應用現狀并對RIA的發展與應用提出了個人見解。
??? 關鍵詞: 富互聯網應用程序? 富客戶端? 瀏覽器/服務器
?
??? 當前,互聯網已經成為應用程序開發的默認平臺。但是,用戶對應用程序復雜性要求與日俱增,而現在的互聯網應用程序在完成復雜應用方面卻始終跟不上步伐。結果導致許多公司必須面對不滿的客戶、遭受營業額損失及成本增加。Web模型是基于頁面的模型,缺少客戶端智能機制。而且,它幾乎無法完成復雜的用戶交互。這樣的技術使得Web應用程序難以使用,支持成本高,并且在很多方面無法發揮效應[2]。為了解決這些問題,出現了一種新類型的Internet應用程序,即富互聯網(Rich Internet Applications,RIA)。這些應用程序結合了桌面應用程序的反應快、交互性強的優點以及Web應用程序傳播范圍廣和容易傳播的特性。RIA簡化并改進了Web應用程序的用戶交互。這樣,用戶開發的應用程序可以提供更豐富、更具有交互性和響應性的用戶體驗。
1? RIA的產生背景
??? 企業級應用程序經歷了幾次系統架構方面的重要轉變。在此過程中,客戶端的表現能力有起有落。圖1顯示了Rich Internet Application的發展過程。
?
??? 基于主機的應用程序:應用程序提供基于文本的非圖形化用戶界面,只有內部人員才能進行訪問。
??? 客戶機/服務器(C/S)應用程序:20世紀90年代出現了客戶機/服務器應用程序,采用圖形用戶界面,客戶端的數據處理能力比較強。但由于客戶端應用程序需要進行不斷的更新,因此部署成本比較高。
??? 瀏覽器/服務器(B/S)應用程序:90年代中期出現了B/S應用程序,Web的廣泛使用解決了C/S應用程序部署和更新的困難。但由于采用了HTML頁面形式的用戶界面,客戶端的數據處理能力較C/S應用程序有所回落[1]。
??? C/S架構的缺點主要是部署、更新的問題。B/S架構的缺點則是無法像C/S那樣使用豐富的效果來展示數據,用戶體驗比較糟糕[3]。從C/S到B/S,二者受限于技術本身分別發展成了重客戶端和重服務器端的模式。而RIA的出現帶來了重新在客戶端和服務器端進行更好的平衡的機會。
2? RIA的特點
??? 圖2是RIA的應用程序模型。RIA是集桌面應用程序的最佳用戶界面功能與Web應用程序的普遍采用和快速、低成本部署以及互動多媒體通信的實時快捷于一體的新一代網絡應用程序。RIA是一種安全、可升級、具有良好適應性的新的面向服務模型。RIA結合了聲音、視頻和實時對話的綜合通信技術,從而給用戶帶來前所未有的網上體驗。
?
??? RIA提供一個強勁的技術平臺,使客戶機的能力復原到與桌面型計算機軟件應用或傳統的C/S系統中的客戶機能力十分接近。它適合傳統的N層開發過程,同時也能夠和遺留的環境集成以延展現有的應用程序而無需進行修改。RIA有能力解決各種復雜性,使需要復雜性的應用得以開發并且減少開發成本。
3? 需要解決的問題
??? 目前需要解決的技術:(1)需要一個更加強大的客戶端運行環境,同時提供統一簡便的開發模型。(2)最大可能地利用客戶端資源,并且資源的訪問是在一個可以控制的環境下完成的。隨著HTML和CSS的演變,已經不像最初的Hyperlink(超鏈接)那么簡單,但是相對于Windows運行環境,在瀏覽器上能夠完成的圖形表現遠遠不夠。(3)具備訪問網絡的能力,同時能夠比較“Smart”地集成Internet上的應用。(4)能夠自動完成安全和升級。(5)擁有一個完整的安全模型和CAS(代碼訪問安全)。(6)具備離線應用的能力,因為訪問終端的多樣化,對于“有時離線”的支持已經成為一個關鍵點。例如在基于智能手機的應用中,要求客戶端實時在線是不可能的,所以在Mobile的應用上采用傳統的B/S結構已經不太現實。
4? RIA應用架構
??? 針對上述要求,一些主流的應用廠商也提出了各自不同的RIA實現。下面針對目前出現的一些RIA應用架構進行闡述。
??? (1)Macromedia Flash/Flex。Macromedia Flash Player的高市場占有率使得客戶端的RIA可以支持種類廣泛的平臺和設備[4]。Flex是為滿足希望開發 RIA的企業級程序員的需求而推出的表示服務器和應用程序框架,可以運行于J2EE和.NET平臺。Flex表示服務器提供基于標準的、聲明性的編程方法和流程,并提供運行時服務,用于開發和部署豐富客戶端應用程序的表示層。Flex開發者使用直觀的基于XML的MXML來定義豐富的用戶界面。該語言由 Flex服務器翻譯成SWF格式的客戶端應用程序,在Flash Player中運行。雖然Flex足夠強大,但是其昂貴的軟件許可和不是特別流暢的開發環境限制了其發展。Flex在近期內很難成為主流平臺。
??? (2)Laszlo。Laszlo是一個開源的RIA開發環境。使用Laszlo平臺時,開發者只需編寫名為LZX的描述語言(其中整合了XML和JavaScript)。運行在J2EE應用服務器上的Laszlo平臺會將其編譯成SWF格式的文件并傳輸給客戶端展示。從這點來說,Laszlo的本質和Flex是一樣的。而且,在未來的計劃中,Laszlo還可以將LZX編譯成Java或.NET本地代碼,從而大大提高運行效率。其劣勢是缺乏大的商業實體的支持,難以成為標準。
??? (3)Avalon。Microsoft的Avalon是下一版本Windows(被稱為Longhorn)的一部分,是一個圖形和展示引擎。Avalon定義了一個在Longhorn中使用的新標記語言XAML(可擴展應用程序標記語言)。可以使用XAML來定義文本、圖像和控件的布局,程序代碼可以直接嵌入到XAML中,也可以保留在一個單獨的文件內。這與Flex中的MXML或者Laszlo中的LZX非常相似。區別是:基于 Avalon的應用程序必須運行在Longhorn環境中,而Flex和Laszlo是不依賴于平臺的,僅僅需要裝有Flash播放器的瀏覽器即可[5]。
??? (4)Java SWT。Java 已經出現多年,并且完全支持創建基于窗體的用戶界面。除了Java基礎類(JFC/Swing)中的用戶界面組件之外,開發人員還可以使用來自于 Eclipse Project的SWT工具箱和許多第三方工具箱進行開發。對于圖形來說,可以采用Java 2D API??梢酝ㄟ^一個Web瀏覽器使用Java插件軟件,或使用Java運行時環境中較新的Java Web Start技術來部署應用程序。使用Java建立Rich Client的主要缺陷是它的復雜性高及Java瀏覽器插件的低市場占有率問題。
??? (5)XUL。XUL是一種基于XML的用戶界面語言,來自于Mozilla的開放源碼項目。它可用于建立窗體應用程序。這些應用程序不但可以在 Mozilla瀏覽器上運行,而且也可以運行在其他描述引擎上。XUL描述引擎都非常?。?00KB以下),它可以使用XML數據也可以生成XML數據。XUL的一個主要缺點在于它目前還沒有獲得一個主要商業實體的支持。XUL最大的優點在于它與Gecko引擎的集成(打開了通向大量Web標準的大門),而且與大多數其他XML用戶界面描述語言相比它是一種表達力很強且簡潔的語言。
??? (6)Bindows。Bindows是用JavaScript和DHTML開發的Web窗體框架。JavaScript用于客戶端界面的顯示和處理,XMLHTTP用于客戶端與服務器的信息傳輸。利用JavaScript幾乎可以實現Windows應用程序的大部分功能。XMLHTTP一直以來常被用于實現無刷新的Web頁面。它和 JavaScript配合,可以完成數據從服務器和客戶端的傳輸。Bindows的一個主要缺點是它采用一次全部載入的方式來實現腳本庫,在窗口的加載期,需要一個漫長的等待過程,甚至瀏覽器的進程會產生無響應的情況。這點Bindows根本沒有遵循用多少取多少的準則。另外,內部大量利用了IE6 的技術,沒有考慮到非IE的瀏覽器,限制了Bindows的流行[5]。
??? 另外,微軟也提出了一個與Rich client類似的Smart Client技術。智能客戶端應用是一個可擴展的、能集成不同應用的桌面應用程序,并具有無接觸部署、自動更新、離線運用、動態加載應用組件和個性化用戶界面等特征,在此不做贅述。
5? RIA的現狀及發展趨勢
??? 現今的應用大多數是基于B/S結構的Web應用,而RIA應用才剛剛興起。包括Macromedia和Microsoft等公司都已經提供了成功的案例。在Macromedia所提供的在線體驗中,筆者著實感覺到了RIA帶來的不一般的體驗。在網絡上也有了許多成功的RIA應用,但企業級的成功案例還不多。盡管如此,RIA也已經顯現出比傳統的基于瀏覽器的瘦客戶端應用在處理復雜交互、改善用戶體驗等方面的優勢。RIA的出現使得網絡應用程序出現了分支,基于瀏覽器的傳統網絡應用會長時間存在下去,可以不依賴于瀏覽器的RIA應用也會越來越多。
??? HTML的設計初衷是為了處理文本,因此非常適合表達文本內容。從當前應用來看,HTML僅僅不適合開復雜的企業應用交互,而在對于大文本信息量,例如forum,wiki,blog,web mail和大量的互聯網站,還是非HTML莫屬[2]。因此傳統的基于HTML的B/S應用還將在很長一段時間內占據主導地位。盡管如此,筆者仍相信,傳統的基于瀏覽器的開發模式現在已經過了其鼎盛期。不管今天的RIA將來會不會成為主流應用程序,人們對開發具有高度互動性、豐富用戶體驗以及功能強大的客戶端的追求是不變的。但是盲目地用RIA來改造現有的B/S應用也是不明智的,應該在用傳統的基于HTML的B/S應用很難甚至無法滿足要求或者使用RIA能夠很好地改善現有的系統效果時才進行改造,因為畢竟在互聯網上較為簡單的應用仍然占據主導地位。而且目前RIA的體系發展仍未完全成熟,放棄現有的技術積累轉而學習RIA的成本仍然不小,因此在采用RIA前需要充分地考慮。
??? RIA具有反映快、交互性強、傳播范圍廣和易于傳播等特點,是網絡應用程序的發展方向。對其進行研究有助于改善現有的傳統網絡應用程序存在的問題,如開發復雜、用戶體驗差、難以進行復雜交互等,有助于掌握未來網絡應用程序的發展方向,具有較強的理論意義和現實指導意義。
參考文獻
1?? 何志國,陳奇.分布式應用體系結構研究.重慶郵電學院學報,2003;15(4)
2?? 雷軍環,孟益民,厲亞.開發基于Web的分布式應用程序策略研究.長沙民政職業技術學院學報,2004;11(1)
3?? 商瑋.多層分布式應用系統及其實現方法.計算機應用與軟件,2003;(7)
4?? 顏金桫.KCLY小土豆工作室.Flash MX 2004 ActionScript 2.0與RIA應用程序開發.北京:電子工業出版社,2005
5?? 程序員(第02期).程序員雜志社,2005