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