從體驗時代的@RIA郵件系統和@AJAX郵件系統分析RIA和AJAX
本文主要通過對RIA郵件應用和AJAX郵件應用的用戶體驗對比,按照對比分析的方式將體驗中的感性升華為理性。同時,此文也可以給所有從事WEB工作的設計人員和開發人員以借鑒參考,也能普及RIA常識和AJAX常識。文章參考了一些網絡上的文章和資源,希望作者體諒,呵呵反正非商業用途吧。主要參考資源有:http://www.richbox.com,http://xpgao.blogchina.com/3991873.html
http://gocom.primeton.com/modules/techresource/article_page.php?linkid=319
http://www.ljxt.com/blog/post/113.html
感謝這些資源提供者
---------------------------------------------------------
RIA應用之Goowy 郵件
http://www1.goowy.com
AJAX應用之Google郵件
http://mail.google.com
---------------------------------------------------------
AJAX與RIA共性:
都是WEB2.0的應用
都具有人性化的設計理念
AJAX與RIA不同:
AJAX比較簡單素雅,人性化,訪問速度快。缺點:代碼混亂,編寫復雜,不符合標準,對搜索引擎不友好。程序效率低。
RIA可擴展性更大,人性化更多,視覺和互動上更好,但缺點是訪問速度慢,下載文件大,還有RIA應用程序特別耗CPU,程序效率比較低,很多問題還需要解決。
---------------------------------------------------------
RIA
---------------------------------------------------------
富互聯網應用系統(RIA)簡介:RIA基礎:RIA入門
請關注那些超越正在失去生命力的HTML標準的技術
在過去的大約兩年中,人們的興趣一直是想構建一個"富客戶端":這是一個用戶接口,它比用HTML能實現的接口更加健壯、反應更加靈敏和更具有令人感興趣的可視化特性。RIA(Rich Internet Application,富互聯網應用系統)技術允許我們在因特網上以一種象使用Web一樣簡單的方式來部署富客戶端程序。無論將來RIA是否能夠如人們所猜測的那樣完全代替HTML應用系統,對于那些采用胖客戶端技術運行復雜應用系統的機構來說,RIA確實提供了一種廉價的選擇。
在本專欄中,我將列舉一些當前的RIA產品和技術,并且提供一些如何開始應用這些產品和技術的啟示。在DevTrends站點和即將發行的近幾期Oracle Magazine雜志上,我將詳細探討使用Oracle平臺部署RIA的特定技術和策略。
為什么用RIA?
基于HTML的應用程序之所以變得流行是由于應用系統的部署成本低、結構簡單,且HTML易于學習和使用。很多用戶和開發人員都樂于放棄由桌面計算機帶來的用戶界面改進,來實現對新數據和應用系統的快速訪問。與喪失一些重要的UI功能相比,基于Web的方式所帶來的好處要更大得多。
然而,某些應用系統并不完全適合采用HTML技術。復雜的應用系統可能要求多次提取網頁來完成一項事務處理,在某些領域中,如醫藥和財務領域,這往往導致交互速度低得無法接受。讓我考慮一個項目管理系統:我們可以將其實現為一個HTML應用系統,但是如果用戶可以看到并且操作圖表、進度表和各種層次結構,那么顯然會工作得更好。
此外,雖然HTML開始走向簡單,但是即使簡單的交互活動也仍然需要用很多的腳本來完成。即使一個輸入窗體經過仔細的布置和全面的腳本設計,它從瀏覽器所能發送的也僅僅是簡單的"名字/值"對。如果一個HTML窗體能夠以XML文檔形式發送和接收更復雜的數據結構,那就好多了。
RIA利用相對健壯的客戶端描述引擎,這個引擎能夠提供內容密集、響應速度快和圖形豐富的用戶界面。除了提供一個具有各種控件(滑標、日期選擇器、窗口、選項卡、微調控制器和標尺等)的界面之外,RIA一般還允許使用SVG(Scalable Vector Graphics,可伸縮向量圖)或其他技術來隨時構建圖形。一些RIA技術甚至能夠提供全活動的動畫來對數據變化作出響應。
RIA的另一個好處在于,數據能夠被緩存在客戶端,從而可以實現一個比基于HTML的響應速度更快且數據往返于服務器的次數更少的用戶界面。對于無線設備和需要偶爾連接的設備來說,將來的趨勢肯定是向富客戶端的方向發展,并且會逐漸遠離基于文本的Web客戶端。那些運行在膝上設備上的應用系統,可以被設計成以離線方式工作,或者至少當連接丟失的時候能基本上以離線的方式工作。
圖1給出了一個典型的RIA體系結構。XML通常被用作數據傳輸的格式,有時也被用來描述窗體的布局。在很多的實例中,客戶端可以保持與數據源的連接,這樣服務器能夠實時地對客戶端數據進行更新。對一個Oracle數據的訪問可以通過Web服務調用來完成。
圖1
用于富客戶端的技術
下面是一些可用的RIA技術:
Java:一些相當復雜的客戶端應用程序(Oracle的JDeveloper,Eclipse)都是用Java編寫的,這說明可以用Java來建立幾乎任何一個能夠想象得到的富客戶端應用程序。到目前為止,Java已經出現幾年了,并且完全支持創建基于窗體的用戶界面。除了Java基礎類(JFC/Swing)中的用戶界面組件之外,開發人員還可以使用來自于Eclipse Project的SWT工具箱和許多第三方工具箱進行開發。對于圖形來說,可以采用Java 2D API--一個非常完整且非常復雜的圖形API。Java還具有對XML和Web服務無人匹敵的支持能力。你可以通過一個Web瀏覽器使用Java插件軟件,或使用Java運行時環境中較新的Java Web Start技術來部署應用程序。使用Java建立富客戶端程序的主要缺陷是它的復雜性(即使對簡單的窗體和圖形也要求編寫非常煩瑣的代碼)。它的優點在于Java對Web標準的全面支持,及該語言和類庫的深刻內涵。
XUL:XUL(念作"zool")是一個基于XML的用戶界面語言,它來自于Mozilla的開放源碼項目。它可用于建立窗體應用程序,這些應用程序不但可以在Mozilla瀏覽器上運行,而且也可以運行在其他描述引擎上,如Zulu(一個Flash MX組件)和Thinleys(一個Java實現)。XUL描述引擎都非常?。?00K以下),它可以使用XML數據也可以生成XML數據。同Java的情況一樣,XUL也有一個非常大的用戶團體,這個團體有大量的開放源工具,如Theodore ThinletEditor(見“下一步”)——一個使你能夠以圖形化方式布局用戶界面,且可以生成相應XUL的Java應用程序。XUL的一個主要缺點在于它目前還沒有獲得一個主要商業實體的支持。XUL最大的優點在于它與Gecko引擎的集成(打開了通向大量Web標準的大門),以及與大多數其他XML用戶界面描述語言相比它是一種非常具有表達力和簡潔的語言。
Macromedia Flash和Flex:Flash是一個已經成熟的商業產品,它可以在Web網頁中引入交互式的圖形界面。最近經過升級后,新版本包含了建立窗體風格的應用程序的功能。盡管Flash作為一個在Web上最廣泛部署的前端技術還有爭議(取決于所選用的Flash Player版本),但據稱已經有98%以上的桌面系統都支持Falsh。由于用來創建動畫式圖形的Flash工具其功能十分強大和是可視化的(與之相反其它技術要求進行低級的圖形編碼),所以圖形設計人員使用起來十分得心應手。Flah采用的腳本語言是ActionScript--ECMAScript 1.5的一個變種,該腳本語言又被稱為JavaScript。Flex產品對Flash增加了一個XML描述語言,使得可以編譯用戶界面,并且能夠用Flash Player來隨時進行描述。Flex使得傳統的開發機構能更好地了解和使用Flash。Flex和Flash的最大缺點在于對XML和Web服務等標準的支持很有限,而且作為應用開發工具的環境還不大成熟。Flex和Flash的優點在于它可以很容易的用來創建復雜的動畫式顯示,以及可以使用第三方附件。
Oracle Forms:Oracle Forms是用來構建以數據庫為中心的互聯網應用系統的一個成熟的商品化產品。通過Oracle Forms,你可以使用一個輸出窗體模塊文件的可視化設計器創建窗體。為了便于在該設計工具外部進一步進行處理,模塊文件要么采用私有的FMT格式,要么采用XML格式。這些模塊文件驅動一個描述窗體的Java運行時環境。除了所有窗體的標準窗口小部件之外,還可以通過集成附加的可插入的Java組件和一些定制的JavaBean來實現更多的功能性。Oracle Forms采用的腳本語言為PL/SQL,Oracle數據庫也采用同樣的腳本語言。Oracle Forms的一個非常有趣的特點就是,用來建立、編輯和編譯窗體模塊文件的Java API--開發人員可以通過創建腳本來生成眾多的窗體應用程序,或者進行全局性的改動。Oracle Forms的主要缺點是,進行Web部署需要獲得Oracle應用服務器的使用許可。它的優點是,它可以與Oracle數據庫和Oracle平臺的其他部分(如Single Sign-On(單一登錄)和Enterprise Manager(企業管理器))緊密集成,對國際化的廣泛支持,以及創建以數據為中心應用程序的極高效率。
開始選擇和使用RIA技術
這里只討論了可用于創建RIA的技術中的一些有代表性的例子,還有很多其他的技術。當選擇一項RIA技術的時候,你需要權衡以下幾個因素:
---------------------------------------------------------
AJAX
---------------------------------------------------------
作為J2EE開發人員,我們似乎經常關注“后端機制(backend mechanics)”。我們通常會忘記,J2EE的主要成功之處在Web應用程序方面;許多原因使得人們喜歡利用Web開發應用程序,但主要還是因為其易于部署的特點允許站點以盡可能低的成本擁有上百萬的用戶。遺憾的是,在過去幾年中,我們在后端投入了太多的時間,而在使我們的Web用戶界面對用戶自然和響應靈敏方面卻投入不足。
本文介紹一種方法,Ajax,使用它可以構建更為動態和響應更靈敏的Web應用程序。該方法的關鍵在于對瀏覽器端的JavaScript、DHTML和與服務器異步通信的組合。本文也演示了啟用這種方法是多么簡單:利用一個Ajax框架(指DWR)構造一個應用程序,它直接從瀏覽器與后端服務進行通信。如果使用得當,這種強大的力量可以使應用程序更加自然和響應靈敏,從而提升用戶的瀏覽體驗。
該應用程序中所使用的示例代碼已打包為單獨的WAR文件,可供下載。
簡介
術語Ajax用來描述一組技術,它使瀏覽器可以為用戶提供更為自然的瀏覽體驗。在Ajax之前,Web站點強制用戶進入提交/等待/重新顯示范例,用戶的動作總是與服務器的“思考時間”同步。Ajax提供與服務器異步通信的能力,從而使用戶從請求/響應的循環中解脫出來。借助于Ajax,可以在用戶單擊按鈕時,使用JavaScript和DHTML立即更新UI,并向服務器發出異步請求,以執行更新或查詢數據庫。當請求返回時,就可以使用JavaScript和CSS來相應地更新UI,而不是刷新整個頁面。最重要的是,用戶甚至不知道瀏覽器正在與服務器通信:Web站點看起來是即時響應的。
雖然Ajax所需的基礎架構已經出現了一段時間,但直到最近異步請求的真正威力才得到利用。能夠擁有一個響應極其靈敏的Web站點確實激動人心,因為它最終允許開發人員和設計人員使用標準的HTML/CSS/JavaScript堆棧創建“桌面風格的(desktop-like)”可用性。
通常,在J2EE中,開發人員過于關注服務和持久性層的開發,以至于用戶界面的可用性已經落后。在一個典型的J2EE開發周期中,常常會聽到這樣的話,“我們沒有可投入UI的時間”或“不能用HTML實現”。但是,以下Web站點證明,這些理由再也站不住腳了:
BackPack
Google Suggest
Google Maps
PalmSphere
所有這些Web站點都告訴我們,Web應用程序不必完全依賴于從服務器重新載入頁面來向用戶呈現更改。一切似乎就在瞬間發生。簡而言之,在涉及到用戶界面的響應靈敏度時,基準設得更高了。
定義Ajax
Adaptive Path公司的Jesse James Garrett這樣定義Ajax:
Ajax不是一種技術。實際上,它由幾種蓬勃發展的技術以新的強大方式組合而成。Ajax包含:
基于XHTML和CSS標準的表示;
使用Document Object Model進行動態顯示和交互;
使用XMLHttpRequest與服務器進行異步通信;
使用JavaScript綁定一切。
這非常好,但為什么要以Ajax命名呢?其實術語Ajax是由Jesse James Garrett創造的,他說它是“Asynchronous JavaScript + XML的簡寫”。
Ajax的工作原理
Ajax的核心是JavaScript對象XmlHttpRequest。該對象在Internet Explorer 5中首次引入,它是一種支持異步請求的技術。簡而言之,XmlHttpRequest使您可以使用JavaScript向服務器提出請求并處理響應,而不阻塞用戶。
在創建Web站點時,在客戶端執行屏幕更新為用戶提供了很大的靈活性。下面是使用Ajax可以完成的功能:
動態更新購物車的物品總數,無需用戶單擊Update并等待服務器重新發送整個頁面。
提升站點的性能,這是通過減少從服務器下載的數據量而實現的。例如,在Amazon的購物車頁面,當更新籃子中的一項物品的數量時,會重新載入整個頁面,這必須下載32K的數據。如果使用Ajax計算新的總量,服務器只會返回新的總量值,因此所需的帶寬僅為原來的百分之一。
消除了每次用戶輸入時的頁面刷新。例如,在Ajax中,如果用戶在分頁列表上單擊Next,則服務器數據只刷新列表而不是整個頁面。
直接編輯表格數據,而不是要求用戶導航到新的頁面來編輯數據。對于Ajax,當用戶單擊Edit時,可以將靜態表格刷新為內容可編輯的表格。用戶單擊Done之后,就可以發出一個Ajax請求來更新服務器,并刷新表格,使其包含靜態、只讀的數據。
一切皆有可能!但愿它能夠激發您開始開發自己的基于Ajax的站點。然而,在開始之前,讓我們介紹一個現有的Web站點,它遵循傳統的提交/等待/重新顯示的范例,我們還將討論Ajax如何提升用戶體驗。
---------------------------------------------------------
RIA與AJAX
---------------------------------------------------------
位于尤他州Midvale的Burton Group公司的高級分析師Richard Monson-Haefel認為,當提到被大肆宣傳的富互聯網應用(Rich Internet Application ,RIA)技術時,更少的才是更好的。這種技術能夠大大促進用戶的Web體驗,因為不必再從服務器刷新頁面,Ajax的風格是單頁面接口。但他在最近關于 Ajax的電視短片中說過度使用會導致導航困難。
他說,Ajax比起其它RIA技術的主要優點是無縫與HTML集成,因此它可以大量使用而不需要改變現有Web內容。“把它想象成Web站點的調料。這樣做的風險非常小。Ajax還是后臺無關且不需要任何插件。與其它RIA技術,例如 Macromedia的Flash等聯合使用,Ajax會是一個強大的工具。”
但是,該技術還沒有成熟,而且工具和框架還沒有得到支持。Monson-Haefel說:“如果你不喜歡用工具集和類庫,Ajax就不適合你。”
Burton Group定義“富”互聯網應用是能夠在標準HTML框架和鏈接之上提供功能的。Google Maps就是這樣一個優秀的Ajax例子。
與Ajax最近被才提出不同,JavaScript已經存在很久了。它基于JavaScript/ECMAScript,、級聯樣式表、文檔對象模型以及XML HTTP請求。最初,很難跨越不同瀏覽器來設計Ajax風格的應用程序。但現在,主流瀏覽器已經演變到支持微軟技術的實現了,并成為了最普通的特征。
今天,占主導地位的RIA技術是Macromedia的Flash/Flex。其它RIA技術包括為Microsoft Windows Presentation Foundation開發的用戶接口標記語言,稱為XAML(Extensible Application Markup Language,可擴展應用程序標記語言)。還有Mozilla的基于XML的用戶接口語言XUL,droplets和Java applets以及微軟將要推出的Windows Presentation Foundation/Everywhere (WPF/E)。
Monson-Haefe說:“Flash是很好的技術,適合于豐富動畫與圖形,但Flash好象是一個小池塘中的大魚?,F實市場現在還沒有那么大,因此隨著市場變大它是否能占領市場還是一個疑問。而微軟將推出的WPF/E會是一個有力的競爭者。”
微軟還計劃推出一個Ajax框架擴展,稱為Atlas。Monson-Haefel認為它非常有前途。他說,Ajax的其它集成開發環境還沒成為主流。這包括Morfik Technology公司的Javascript Synthsis Technology (JST)、JetBrains公司的IntelliJ IDEA 5.0、Tibco Software公司的Tibco General Interface (GI)、JackBe公司的Visual GUI Builder、Backbase B.V.公司的Backbase以及開源的Ruby on Rails框架。
他說:“它已經內建了Ajax功能,使你能夠用Ruby編程語言編寫Ajax應用程序。”
Monson-Haefel說:“用于編寫Ajax應用的Tibco工具非常好。JackBe也是相當好的RIA技術而Backbase或許是現在更好的一個。IDE的優點就是所見即所得的開發方式,但你購買了他們的GUI,這樣你也受到觀感上的束縛。”
除了IDE和框架擴展,Monson-Haefel還提到可用的Ajax UI工具和遠程工具還有很多,包括私有的和開源的產品。他說,只有一部分。根據Burton Group公司最近的一項調查,在488位Ajax開發人員中,最流行的工具集、類庫和框架擴展是有MIT風格證書的JavaScript框架—— Prototype,JavaScript 類庫——Script.aclo.us,有Apache 2.0證書的Direct Web Remoting,有Academic Free License v 2.1的Dojo UI工具集以及Ruby on Rails。
至于數據,對Ajax的關注主要集中在B2C的Web站點,但Monson-Haefel指出Ajax實際上與Web服務和SOA有緊密聯系,它能影響企業門戶。
“一些人相信Ajax將成為門戶解決方案的主要復蘇因素。門戶被宣傳了很久,但實際上它并非所謂的銀彈。而Ajax表示層與門戶的結合將促進所有用戶的體驗。”
Monson-Haefel警告說Ajax很容易被濫用。“假如開發人員不理解使用理論,他們就會胡亂應用它而且人們會刻意避開JavaScript。我的推理來自瀏覽器彈出窗口。這種技術源于一種可用特性,但由于被濫用它已經成為Web技術中的下等公民,人們也不再使用它了。”
新聞熱點
疑難解答
圖片精選