新一代Web站點的高速崛起,讓HTML的腳步略顯笨拙。讓原有HTML技術在應用的新階段重新煥發光彩,是RIA(Rich Internet Application,豐富Internet應用)的歷史使命。
除Web站點外,Internet技術已經被廣泛應用于建設內部企業應用。然而,與其他桌面應用提供的功能與性能相比,HTML已經變得有些落后。要克服HTML自身的諸多限制,最好的解決途徑就是運用RIA技術。
HTML采用的是典型的文檔驅動式架構,雖然它極為成功,但也有明顯的弱點。首先,在所有的HTML模型中,大多數用戶的活動都會導致頁面刷新(即Web服務器的往返操作)。這就必然會產生一個線性的多步驟互動過程,并且會對互動能力造成諸多限制;而從體驗和性能的角度看,這比典型桌面應用所提供的體驗和應用要差得多,更不可能提供高端圖形應用所具備的豐富表現力和創造性。
RIA技術可以很好地化解這兩方面的問題。它可以提供一種更具創造性的平臺,支持更富有吸引力的用戶體驗。它還可以提供類似桌面應用風格的互動模型和性能,同時保留Internet“一次部署、隨處使用”式的軟件安裝模型。
RIA的選擇
對很多人來說,所謂“豐富的Internet”就是Flash的同義詞。不錯,Flash的確扮演著重要的角色,但用戶選擇的余地也很大。附表1所歸納的便是這些主要的選擇。
DHTML
DHTML,即動態HTML。它是一種由HTML/XHTML、CSS表(層疊樣式表單)和JavaScript簡單組合后的產物。所有的瀏覽器都支持DHTML,因此,它可以算是HTML的一種自然擴展,受到了普遍的歡迎。然而,DHTML只能部分解決HTML的問題,它仍然以文檔為中心,其最大的弱點在于它在不同的瀏覽器上是不連貫的。它需要針對瀏覽器進行專門的編碼,因此會提高復雜性,并增加開發和維護成本。
Macromedia Flash
Flash在最初設計時只是一種動畫工具。但隨著時間的推移,它的能力已經得到擴展。今天,Flash的最新版本Version 8已經可以支持非常復雜的動畫、視頻、音頻和通過基于ECMA的ActionScript語言實現的編程能力。
Flash主要用來提供如下功能:
● 在圖形方面具有吸引力的產品信息。
● 無需刷新頁面即可實現實時的信息更新。
● 高級工具和向導。
我們可以利用很多方法來實現Flash對象與其他技術的集成,例如JSP、XML、Java對象、.Net對象或Web服務。
Java Applet
Applet是人們提供豐富功能的最早嘗試之一。開發人員可以利用Java編寫Applet代碼,而且能夠提供幾乎所有編程語言所具備的完整靈活性。不過,在實際應用中,Applet的下載和執行性能較差,在不同操作系統上的執行也很不連貫。因此,雖然Java是最受歡迎的服務器端代碼開發平臺之一,但它的Applet在實際應用中并不是非常普及。
ActiveX
ActiveX是由微軟公司推出的,其目標也是為Web頁面提供功能豐富的組件。ActiveX組件都是一些很容易安裝的微型程序,可以通過Web下載,并且能夠運行在瀏覽器窗口中。然而,出于安全考慮,越來越多的用戶都不再愿意將來歷不明的程序安裝到自己的系統中,這也嚴重地影響了ActiveX組件的普及程度。
微軟目前正在開發一種全新的用戶界面技術,代碼為Avalon。這種技術中包含了XAML,這是一種用于編寫用戶界面的新型描述性編程語言。該技術將文檔、媒體和用戶界面的處理工具統一在一起,可以提供更為強大的性能和安全保障。
表示服務器
表示服務器(Presentation Server)是專門為解決HTML的弱點而創造出來的,它提供一種全新的平臺,用于創建新一代的互動型網站和應用,而且其應用的復雜性可與桌面應用媲美。同時,它也保留了Web應用部署簡便的特性(附表2為市場上表示服務器重要產品列表)。
表示服務器的特性包括:
● 將業務層與表示層明確區分開,只將注意力集中于表示層。
● 全面的部署工具,包括集成的開發環境,具備豐富的預構組件集,支持拖放隱喻、WYSIWYG編輯和預覽。
● 便于與基于標準的J2EE或.Net的Web基礎設施集成。
● 通過降低網絡帶寬需求實現較高的性能。
● 零安裝,應用可以部署在任何一種瀏覽器中,無須安裝任何額外軟件。
● 支持SSL(加密套接字協議層)模型。
AJAX
AJAX是異步JavaScript及XML的縮寫,它是DHTML概念的重要擴展。
它集合了基于XHTML和CSS的表示、基于XML和XSLT的數據處理、使用XMLHttpRequest 的異步數據檢索和JavaScript編程。當用戶請求某個AJAX頁面時,基于JavaScript的AJAX引擎便會首先加載。然后由它來負責頁面渲染和與Web服務器的通信,這些操作可以獨立完成,因此,頁面的加載速度非常快(無需等待所有數據到達后才顯示頁面),而用戶可以立即與頁面產生互動。同時,與服務器的異步通信還可以在不刷新頁面的情況下實現互動。
確切地說,AJAX并不是一種產品,而是一種設計模式。不過,基于AJAX的產品已經開始出現。例如,Tibco Software公司已經推出了一種基于AJAX的豐富客戶端。而Google Map則稱得上是AJAX最成功的實施范例之一。
RIA的缺陷
任何技術都可能被錯誤地使用,RIA也不例外。Flash就是一個典型的例子,雖然Flash的支持群體十分強大,但它也招來了大量的批評。用戶的抱怨主要包括:
● Flash內容太多,下載緩慢,內容浮夸且非常煩人,因此用戶體驗很差。雖然在許多網站上情況確實如此,但這并不是Flash技術的問題,而是因為創作時選擇的設計方向不正確,并最終導致了這樣的結果。
● Flash代碼難以維護;它并沒有遵循開放高質量軟件的最佳慣例。這在許多Flash對象身上確實是不爭的事實。然而,無論采用哪種語言編寫的代碼,總會有人報以這樣的看法。必須承認,Flash中并不存在致命問題,開發人員仍可以非常方便地編寫結構良好、模塊化、可復用的代碼。
● 無法對Flash對象進行搜索或運行Web分析。要想將那些專門為HTML網站設計的工具集成到Flash中,過程將是相當困難的。但大多數工具廠商都在逐步增加和改善對Flash的支持,因此前景依然是光明的。
其實,Flash面臨的最大挑戰還是在人才基礎方面。完美的Flash開發人員應當具備卓越的創造靈感和嚴格的編程紀律,但要找到同時具備這兩種特質的人非常困難。
但無論如何,對于那些在數據和功能方面都比較豐富的應用和圖像密集型應用而言,RIA是非常有價值的技術。這些技術成功地將桌面和Web精華集于一身,因此,在設計Web站點和應用時,我們應當認真地考慮各類RIA技術的優勢和潛力。在很多情況下,這些技術將會為您提供最合適的用戶界面。
| 附表一 不同種類RIA技術對比 | ||
| 技術名稱 | 優點 | 弱點 |
| DHTML | 基于開放標準,且無需插件。 | 在不同的瀏覽器、瀏覽器版本和操作系統上的表現不夠連貫;需要專門針對瀏覽器編寫代碼;以文檔為中心。 |
| Flash | 集成動畫、流媒體和數據 ;適用各種瀏覽器的連貫體驗;開發工具的表達方式符合圖像設計師的習慣。 | 需要插件;增加了下載時間;開發工具更適合動畫對象的開發,不太適合應用的開發。 |
| Java Applets | 功能豐富;基于開放標準; 安全模型。 | 性能較差;開發成本較高。 |
| ActiveX | 成熟的技術;高性能;掌握ActiveX技能的人員數量眾多; 獨立的編程語言。 | 對平臺有依賴性,且以Windows為主;對瀏覽器有依賴性;組件尺寸較大;安全模式不被認可。 |
| Flash渲染表示服務器:Macromedia Flex OpenLaszlo | 將表示層與業務層分離開來;開發工具的表述方式符合軟件工程師的習慣;豐富的組件框架;Flash用戶體驗。 | 需要Flash插件;需要將MXML或LZX編譯為SWF;需要一種支持的應用服務器。 |
| Applet渲染表示服務器: Integra AltioLive Nexaweb | 將表示層與業務層分離開來;基于Applet的渲染引擎較小;高性能 內部應用的理想工具。 | 需要JVM;基于Applet;廠商市場份額較小。 |
| AJAX | 基于開放標準;異步體驗;無需插件;市場的認知程度正在逐步提高。 | 在不同的瀏覽器、瀏覽器版本和操作系統上表現不夠連貫;支持程度有限;仍然處于應用的早期階段。 |
| 附表2表示服務器重要產品列表 | |
| Macromedia Flex | Macromedia長期以來一直為開發人員提供有效的工具,使其能夠創建出豐富多彩的用戶體驗;使用Flash Player完成渲染。 |
| OpenLaszlo | 開放源代碼;基于Eclipse的集成開發環境 ;使用Flash Player完成渲染。 |
| Integra AltioLive | 最先進入市場的產品;歸Tiger Telematics公司所有;基于Java applet的小型客戶端。 |
| Nexaweb | 基于Eclipse的集成開發環境;支持用戶界面定義的兩種開放標準,即XUL和SVG ;超小型Java客戶端(大小僅為150kb)。 |
新聞熱點
疑難解答