樊峻
(安徽理工大學(xué)計(jì)算機(jī)學(xué)院,安徽 淮南230031)
RIA 開發(fā)必須具備三個(gè)要素:富客戶端技術(shù)、服務(wù)器技術(shù)和開發(fā)工具。富客戶端技術(shù)充分利用本地機(jī)器的處理能力來處理數(shù)據(jù),而不需要把某些數(shù)據(jù)發(fā)送到服務(wù)器處理,充分利用了本地機(jī)器的資源。服務(wù)器技術(shù)提供了一種與富客戶端的連接機(jī)制,作為RIA的服務(wù)器技術(shù)必須從現(xiàn)有的服務(wù)器技術(shù)繼承,可以提供一個(gè)快速的腳本環(huán)境,支持?jǐn)?shù)據(jù)庫應(yīng)用開發(fā)、雙向數(shù)據(jù)通信、實(shí)時(shí)數(shù)據(jù)通信,甚至采用一種新的服務(wù)器,例如:ColdFusionServer和FlashCommunicationServer等。RIA實(shí)現(xiàn)必須有一組簡單而高效的開發(fā)工具,如果沒有一組簡單而高效的開發(fā)工具,那么富客戶端技術(shù)與服務(wù)器技術(shù)是毫無意義的。正是由于RIA的C/S結(jié)構(gòu),它需要一組開發(fā)工具協(xié)同工作才可以完成。
Laszlo是一個(gè)開源的Richclient開發(fā)環(huán)境。使用Laszlo平臺(tái)時(shí),開發(fā)者只需編寫名為LZX的描述語言(其中整合了XML和JavaScript),運(yùn)行在J2EE應(yīng)用服務(wù)器上的Laszlo平臺(tái)會(huì)將其編譯成FLASH文件并傳輸給客戶端展示。單從運(yùn)行原理來說,Laszlo與XUL(XML用戶接口語 言 ,XML User interface Language)、XAML("Longhorn")標(biāo)記語言很類似。但它的最大優(yōu)勢在于:它把描述語言編譯成FLASH,而FLASH是任何瀏覽器都支持的展示形式,從而一舉解決了瀏覽器之間的移植問題。而且,在未來的計(jì)劃中,Laszlo還可以將LZX編譯成Java或.NET本地代碼,從而大大提高運(yùn)行效率。
Proxied方案又稱Openlaszlo服務(wù)器方案,或者J2EE方案。因?yàn)橐坏┎捎迷摲桨?,Open-Laszlo服務(wù)器便自應(yīng)用啟動(dòng)之時(shí)開始一直運(yùn)行。它負(fù)責(zé)中介或者說代理客戶端的OpenLaszlo與任何后臺(tái)服務(wù)器資源的通信。如圖1、2所示,在Proxied方案之下,開發(fā)人員將LZX的源代碼放置在OpenLaszlo服務(wù)器的Web-apps目錄下。用戶第一次瀏覽到相應(yīng)的LZX文件時(shí),文件被動(dòng)態(tài)地編譯。當(dāng)源代碼被改變時(shí),文件會(huì)被動(dòng)態(tài)地編譯。OpenLaszlo服務(wù)器的部署需要一個(gè)Java應(yīng)用服務(wù)器或者一個(gè)Servlet的容器。這個(gè)容器能夠在服務(wù)器上提供額外的依賴,包括對(duì)于 SOAP、XML-RPC、Java-RPC和支持持久連接的支持。OpenLaszlo服務(wù)器同時(shí)也要求應(yīng)用程序使用一些不被Flash播放器支持的媒體類型文件。OpenLaszlo服務(wù)器會(huì)即時(shí)地將這些東西轉(zhuǎn)譯為Flash播放器支持的格式。
在Proxied方案下,OpenLaszlo支持SOAP、XML-RPC、Java-RPC等三種遠(yuǎn)程調(diào)用方式??蛻舳送ㄟ^Laslzo服務(wù)器轉(zhuǎn)發(fā)遠(yuǎn)程調(diào)用的請求,隨后服務(wù)器觸發(fā)合適的數(shù)據(jù)連接器,將數(shù)據(jù)編譯成壓縮的二進(jìn)制形式傳回客戶端,呈現(xiàn)給終端用戶。
Proxied方案是是一種重量級(jí)的框架設(shè)計(jì)方案。它需要開發(fā)人員和設(shè)計(jì)者在應(yīng)用的設(shè)置、調(diào)試上耗費(fèi)大量的精力,但是能夠獲得Open-Laszlo功能的最大集合。
圖1 OpenLaszlo服務(wù)器體系結(jié)構(gòu)
圖2 OpenLaszlo客戶端和服務(wù)器的交互方式
SOLO方案的設(shè)計(jì)思想是這樣的:LZX的源代碼將被預(yù)先編譯為一個(gè)獨(dú)立的SWF文件,隨后被放置在一個(gè)公用的HTTPWeb服務(wù)器的對(duì)應(yīng)目錄之下。SOLO方案易于管理,并且被任何的Web主機(jī)服務(wù)所支持,例如Apache或者Tomcat。因此顧名思義,SOLO也被稱為"無服務(wù)器"的方式,因?yàn)樵趹?yīng)用的運(yùn)行過程中并不需要OpenLaszlo的服務(wù)器。目前,有兩種方法為SOLO方案編譯OpenLaszlo應(yīng)用。一種是從命令行中調(diào)用編譯器的API。對(duì)應(yīng)用進(jìn)行預(yù)先的編譯;另一種則使用OpenLaszlo服務(wù)器和指定的參數(shù),對(duì)應(yīng)用進(jìn)行即時(shí)的編譯。在運(yùn)行相關(guān)的命令之后,編譯器將會(huì)在和源文件相同的目錄下生成一個(gè)目錄文件(Flash格式或者DHTML格式)。編譯后生成的文件可以被任何Web服務(wù)器所部署。SOLO方案對(duì)開發(fā)環(huán)境要求簡單,并且別Proxied方案更為簡單方便,也有更好的性能。但是,SOLO方案也相應(yīng)地缺少一些Proxied方案下的功能。例如某些多媒體格式文件的支持等等。
SOLO相對(duì)Proxied方案來說,是一種輕量級(jí)的框架設(shè)計(jì)方案,它使得應(yīng)可以不必太多的依賴性于OpenLaszlo本身,達(dá)到最大的靈活性。當(dāng)然同時(shí)也會(huì)產(chǎn)生一些功能上的犧牲。
SOLO和Proxied方案的比較,如圖3所示:
圖3 SOLO和Proxied方案的比較
雖然缺少了一些特性的支持,但是SOLO方案比起Proxied方案更加方便和快捷,并且會(huì)有更好的性能表現(xiàn)。
上文可以看出,SOLO相對(duì)Proxied方案來說,是一種輕量級(jí)的框架設(shè)計(jì)方案,它使得應(yīng)可以不必太多的依賴性于OpenLaszlo本身,達(dá)到最大的靈活性。當(dāng)然同時(shí)也會(huì)產(chǎn)生一些功能上的犧牲。雖然缺少了一些特性的支持,但是SOLO方案比起Proxied方案更加方便和快捷,并且會(huì)有更好的性能表現(xiàn)。
[1]左偉明.即用即查XML數(shù)據(jù)標(biāo)記語言參考手冊[M].北京.人民郵電出版社,2007.
[2]張孝祥.Java就業(yè)培訓(xùn)教程.北京.清華大學(xué)出版社,2008.
[3]曹若沈.基于OpenLaszlo的數(shù)據(jù)驅(qū)動(dòng)應(yīng)用研究與設(shè)計(jì)[J].上海.上海交通大學(xué),2008.
[4]Randal E.Bryant,DavidO'Hallaron.Computer SystemsAProgrammer'sperspective[M].北京.中國電力出版社,2004.