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