學(xué)習(xí)Flex和BlazeDS的十三個(gè)理由.doc_第1頁(yè)
學(xué)習(xí)Flex和BlazeDS的十三個(gè)理由.doc_第2頁(yè)
學(xué)習(xí)Flex和BlazeDS的十三個(gè)理由.doc_第3頁(yè)
學(xué)習(xí)Flex和BlazeDS的十三個(gè)理由.doc_第4頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余1頁(yè)可下載查看

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

本文列述了13個(gè)Java程序員應(yīng)當(dāng)學(xué)習(xí)Flex和BlazeDS的理由,討論了為什么Flex結(jié)合BlazeDS是開(kāi)發(fā)RIA的最佳組合之一。無(wú)論是高度交互的網(wǎng)站還是以Java為后端的企業(yè)應(yīng)用,這項(xiàng)組合都是最佳選擇之一。更重要的是,這項(xiàng)組合能同時(shí)為開(kāi)發(fā)員和企業(yè)帶來(lái)高回報(bào)(ROI)。在闡述Java程序員應(yīng)當(dāng)學(xué)習(xí)BlazeDS的13條理由時(shí),我以一個(gè)假想的蘇打分派系統(tǒng)來(lái)展示如何讓已有的Java程序轉(zhuǎn)變?yōu)镽IA應(yīng)用。通過(guò)這個(gè)例子,我同時(shí)還會(huì)講解到BlazeDS在已有Java應(yīng)用或新建Java應(yīng)用中的多種不同用法。理由一:開(kāi)源Flex軟件開(kāi)發(fā)工具箱(SDK)的核心是個(gè)開(kāi)源框架,專(zhuān)門(mén)用來(lái)開(kāi)發(fā)、維護(hù)那些在不同瀏覽器、不同操作系統(tǒng)下界面都相同的RIA應(yīng)用。Flex發(fā)布采用的是Mozilla公共許可證(Mozilla Public License)。編譯后的Flex應(yīng)用在Adobe Flash平臺(tái)下運(yùn)行。BlazeDS是連接Flex和Java的索橋,是項(xiàng)針對(duì)遠(yuǎn)程調(diào)用和消息傳遞的開(kāi)源技術(shù)。在Java應(yīng)用服務(wù)器上,它以servlet的形式存在,因此可以在任何標(biāo)準(zhǔn)Java網(wǎng)絡(luò)應(yīng)用中運(yùn)用它。BlazeDS以LGPL(Lesser GNU Public License)公共許可證書(shū)發(fā)布。在發(fā)布BlazeDS的同時(shí),Adobe還公布了AMF(ActionScript Message Format)規(guī)格說(shuō)明,BlazeDS、Java和Flex客戶端間以這種簡(jiǎn)潔的二進(jìn)制格式實(shí)現(xiàn)通信。理由二:完善的社區(qū)支持Flex社區(qū)非?;钴S,社區(qū)貢獻(xiàn)了大量項(xiàng)目。F,這個(gè)配以社區(qū)新聞的Adobe站點(diǎn)幾乎每天都有新的社區(qū)貢獻(xiàn);Yahoo!上的Flex用戶組的成員也已經(jīng)超過(guò)了11000。再比如Google Code上的Flexlib項(xiàng)目,已經(jīng)提交了大量的開(kāi)源UI組件。Swiz和Mate項(xiàng)目貢獻(xiàn)了優(yōu)化事件處理的框架;還有Gorilla Logic貢獻(xiàn)了自動(dòng)化UI測(cè)試的Flex Monkeym項(xiàng)目。理由三:帶來(lái)廣闊的就業(yè)前景據(jù)Adobe的Flex“傳道士”James Ward看來(lái),F(xiàn)lex高級(jí)開(kāi)發(fā)員的市場(chǎng)需求非常大,學(xué)習(xí)Flex能讓你擁有極具市場(chǎng)競(jìng)爭(zhēng)力的開(kāi)發(fā)技能。理由四:更高的業(yè)務(wù)效益回報(bào)總體上,開(kāi)發(fā)企業(yè)web應(yīng)用不是個(gè)輕松的活,這基本上是眾所周知的事實(shí)。Flex和BlazeDS提供的不僅僅是功能強(qiáng)大的開(kāi)發(fā)工具,而且開(kāi)發(fā)技術(shù)本身相對(duì)也非常簡(jiǎn)單。開(kāi)發(fā)效率可以得到大幅度的提升,產(chǎn)品因此可以很快推向市場(chǎng)。Flex和Flash帶來(lái)的用戶體驗(yàn)也相對(duì)更有魅力,對(duì)增加流量、提高用戶轉(zhuǎn)化率(conversion rate)很有幫助。很經(jīng)典的一個(gè)例子是Borders連鎖書(shū)店。他們最近發(fā)布了帶有“魔法書(shū)架”的新網(wǎng)站,這個(gè)網(wǎng)站采用Flash接口來(lái)模擬書(shū)籍借閱的過(guò)程。Borders 發(fā)現(xiàn)這一模擬借閱非常明顯地提到了用戶轉(zhuǎn)換率:“借助這個(gè)Flash驅(qū)動(dòng)的接口,用戶可以瀏覽書(shū)籍、DVD和CD的封面,用戶轉(zhuǎn)換率比其他沒(méi)有此項(xiàng)功能的網(wǎng)站高出62”。理由五:Flex是第一個(gè)專(zhuān)門(mén)為創(chuàng)建UI而設(shè)計(jì)的語(yǔ)言大部分語(yǔ)言都不是在第一時(shí)間設(shè)計(jì)其對(duì)UI的支持。Java中Swing包的實(shí)現(xiàn)剛好是個(gè)很好的證明。也就是這個(gè)原因,很多像捆綁數(shù)據(jù)這樣的簡(jiǎn)單動(dòng)作在Swing當(dāng)中的實(shí)現(xiàn)就非常痛苦。用 Swing最大的問(wèn)題在于,要想提高開(kāi)發(fā)效率就必須要對(duì)其API了如指掌。Flex剛好相反,它是專(zhuān)門(mén)為創(chuàng)建web UI而設(shè)計(jì)的。正如Bruce Eckel所說(shuō),F(xiàn)lex是第一個(gè)針對(duì)UI開(kāi)發(fā)的領(lǐng)域特定語(yǔ)言(DSL)。用Flex構(gòu)建UI比其它諸如JSP、JSF、Swing等技術(shù)簡(jiǎn)便得多。語(yǔ)言本身糅合了數(shù)據(jù)綁定、事件處理、控件布局以及其它一些UI常用開(kāi)發(fā)技巧,就算對(duì)語(yǔ)言沒(méi)有深刻的理解也不會(huì)影響開(kāi)發(fā)效率。理由六:編程風(fēng)格近似于Java你可以繼續(xù)使用現(xiàn)有的Java開(kāi)發(fā)工具來(lái)開(kāi)發(fā)Flex應(yīng)用。當(dāng)然也可以采用SDK中攜帶的免費(fèi)命令行工具,Adobe Flex Builder(一個(gè)Eclipse插件),或最近的IntelliJ IDEA 8。Flex提供的是一個(gè)有狀態(tài)環(huán)境,在這個(gè)環(huán)境中,數(shù)據(jù)從客戶端加載。這種編程模式更像是開(kāi)發(fā)桌面客戶端而非HTML編程,這種風(fēng)格對(duì)于用過(guò)Java Swing編程的開(kāi)發(fā)員來(lái)說(shuō)應(yīng)該是相當(dāng)熟悉。Flex是MXML(類(lèi)似XML的UI標(biāo)記語(yǔ)言)和Adobe ActionScript(面向?qū)ο蟮慕馕稣Z(yǔ)言)的結(jié)合體。鑒于這種結(jié)合方式,F(xiàn)lex編程與Java非常相似,因?yàn)閮烧哂玫亩际鞘熘拿嫦驅(qū)ο蟮母拍?。最理想的開(kāi)發(fā)環(huán)境是把Flex應(yīng)用創(chuàng)建在web部署文件夾下。這樣一來(lái),每次更新應(yīng)用之后都不需要重新部署,只要在瀏覽器下刷新一下就可以了。用Flex和BlazeDS開(kāi)發(fā)后,開(kāi)發(fā)效率絕對(duì)比之前有很大的提升。理由七:BlazeDS可以在任何Java應(yīng)用服務(wù)器上運(yùn)行BlazeDS目前已發(fā)布了多個(gè)版本,其中的turnkey版本還包含了為BlazeDS配置的Apache Tomcat。本文中,我用的是二進(jìn)制發(fā)布版本,其中含有一個(gè)WAR用來(lái)展示如何把應(yīng)用部署到各種應(yīng)用服務(wù)器上去。不用這個(gè)WAR的話,你也可以從中提取 JAR文件放到自己的項(xiàng)目中去。關(guān)于安裝BlazeDS的各種選項(xiàng)內(nèi)容,可以參見(jiàn)BlazeDS的wiki。這里舉一個(gè)簡(jiǎn)單的例子,比方說(shuō)要在已有的一個(gè)簡(jiǎn)單的蘇打調(diào)配系統(tǒng)中應(yīng)用BlazeDS。你只要把JAR文件放到項(xiàng)目文件夾下,然后就可以在應(yīng)用里直接用BlazeDS,可以部署到能夠部署應(yīng)用的任何地方。在項(xiàng)目中添加BlazeDS,只需要完成下面兩個(gè)步驟:1. 解壓縮BlazeDS WAR文件的內(nèi)容:jar xvf blazeds.war。2. 把JAR文件都拷貝到項(xiàng)目的lib文件夾下:cp -R WEB-INF/lib /sodaSample。理由八:可以在已有Java應(yīng)用中運(yùn)用比方說(shuō)這個(gè)簡(jiǎn)單的蘇打調(diào)配系統(tǒng),假設(shè)你想要擴(kuò)展這個(gè)已開(kāi)發(fā)好的服務(wù),讓其它Flex應(yīng)用可以遠(yuǎn)程調(diào)用。在現(xiàn)成的應(yīng)用中配置BlazeDS的基本步驟有:1. 修改WEB-INF/flex文件夾下的BlazeDS配置文件2. 在該應(yīng)用對(duì)應(yīng)的web.xml文件里定義MessageBrokerServlet和session監(jiān)聽(tīng)器配置好BlazeDS之后,再把蘇打調(diào)配服務(wù)添加到BlazeDS遠(yuǎn)程配置文件里,F(xiàn)lex客戶就能遠(yuǎn)程調(diào)用了。這個(gè)過(guò)程通過(guò)在配置文件里定義一個(gè)目的地(destination)、一個(gè)或多個(gè)信道(channel)來(lái)傳輸數(shù)據(jù)?;镜腁MF信道定義在services.xml文件里。下面這段配置在 remoting-config.xml里定義了目的地(destination):com.gorillalogic.sodaSample.SodaService通過(guò)在遠(yuǎn)程調(diào)用配置文件里定義端點(diǎn)(endpoint),F(xiàn)lex客戶端就可以調(diào)用任何一個(gè)基本的Java服務(wù)。要是想把Java數(shù)據(jù)模型也傳送到Flex客戶端的話,只要在ActionScript類(lèi)中定義好兩者間的映射:BindableRemoteClass(alias=com.gorillalogic.sodaSample.SodaModel)這段代碼告訴Flex,在遠(yuǎn)程調(diào)用的服務(wù)返回SodaModel的時(shí)候,把它映射到Flex的SodaModel。本例中的Flex客戶端顯示的就是如何調(diào)用這個(gè)Java服務(wù)。調(diào)用返回一個(gè)已經(jīng)填寫(xiě)好預(yù)定信息的SodaModel:public function callSodaService():void var sodaType:String = type.text;var sodaCount:int = parseInt(cnt.text);var flag:Boolean = preOpen.selected;remoteObject.getSoda(sodaType, sodaCount, flag);private function resultHandler(event:ResultEvent):void var sodaModel:SodaModel = event.result as SodaModel;Flex返回的結(jié)果是通用的result變量,可以直接映射到你的SodaModel。這里我就不深入討論怎么實(shí)現(xiàn)映射了,但其中值得提到的是要在編譯配置里聲明services-config.xml路徑,像這樣:-locale en_US -services=/nsource/sodaSample/web/WEB-INF/flex/services-config.xml -context-root /如果不添加這個(gè)路徑的話,你的Flex客戶端就沒(méi)發(fā)找到Java服務(wù)。同樣的方式,你還能把一個(gè)對(duì)象從客戶端傳遞回服務(wù)器端。比如,你可以把一個(gè)空的soda model發(fā)回服務(wù)器(審校注:原文這里寫(xiě)的是客戶端,根據(jù)上下文判斷這里應(yīng)該是服務(wù)器端)。理由九:可以通過(guò)Java來(lái)擴(kuò)展和修改BlazeDS假如你想添加特殊的日志來(lái)記錄蘇打調(diào)配服務(wù)被調(diào)用的情況,那么你可以擴(kuò)展標(biāo)準(zhǔn)的Java適配器來(lái)添加日志功能。首先,添加一個(gè)繼承了JavaAdapter的Java類(lèi):import flex.messaging.services.remoting.adapters.JavaAdapter.public class TimingJavaAdapter extends JavaAdapter 其次,重載invoke()方法:public Object invoke(Message message) RemotingMessage remotingMessage = (RemotingMessage) message; String operation = remotingMessage.getOperation(); String destination = remotingMessage.getDestination();L(calling + operation + on destination + destination);Object data = super.invoke(message);return data;這個(gè)方法中,你可以看到調(diào)用之后的操作和調(diào)用的目的地(destination)。這種方法也能用來(lái)處理其它一些問(wèn)題,比如記錄向服務(wù)器發(fā)送調(diào)用需要多長(zhǎng)時(shí)間。理由十:HTML和JSP也能調(diào)用BlazeDS從HTML和JSP也能調(diào)用BlazeDS,這種調(diào)用有幾種不同的實(shí)現(xiàn)方式,比如通過(guò)Browser Manager或fflashVarsf來(lái)實(shí)現(xiàn)。Flex應(yīng)用能夠讀取由HTML頁(yè)面設(shè)置的fflashVarsf。比方說(shuō)你想要通過(guò)HTML頁(yè)面來(lái)發(fā)送你的用戶名和準(zhǔn)備預(yù)定的蘇打類(lèi)型,你可以在HTML頁(yè)面這樣設(shè)置flashVars: 然后,在Flex應(yīng)用中,你可以通過(guò)讀取應(yīng)用參數(shù)來(lái)獲取這些變量:var username:String;if (Application.application.parameters.hasOwnProperty(username) username = Application.application.parameters.username;理由十一:Flex和BlazeDS的數(shù)據(jù)傳輸性能遠(yuǎn)勝于其它Ajax解決方案目前使用的遠(yuǎn)程過(guò)程調(diào)用(RPC)都默認(rèn)選擇AMF二進(jìn)制協(xié)議。AMF是個(gè)開(kāi)放的標(biāo)準(zhǔn),而且相當(dāng)快。James Ward曾舉例比較過(guò)多種遠(yuǎn)程調(diào)用解決方案。盡管其它Ajax技術(shù)比如Dojo已經(jīng)能夠快速處理幾百行的數(shù)據(jù),但是用Flex和BlazeDS的話可以輕松搞定成千上萬(wàn)行。(請(qǐng)參考James Wards census,可以了解下各種不同的RIA數(shù)據(jù)加載技術(shù)的測(cè)評(píng)。)理由十二:Java客戶端能夠直接調(diào)用BlazeDS最新發(fā)布的BlazeDS當(dāng)中含有一個(gè)Java的AMF類(lèi),通過(guò)這個(gè)類(lèi),你可以在Java客戶端直接調(diào)用BlazeDS服務(wù)器。對(duì)于單元測(cè)試和加載測(cè)試來(lái)說(shuō),BlazeDS的這種調(diào)用方式非常實(shí)用。理由十三:Spring下也能用Adobe和Spring互相聯(lián)手,嘗試將雙方項(xiàng)目集成起來(lái)。他們發(fā)布的第一個(gè)SpringBlazeDS集成版本就向大家展示了他們的良苦用心。Spring Bean能夠以遠(yuǎn)程服務(wù)的方式被調(diào)用,因此可以清除很多重復(fù)的配置文件。更多這方面的相關(guān)信息,可以參考該項(xiàng)目的主頁(yè)。結(jié)論開(kāi)源的BlazeDS創(chuàng)建在Java基礎(chǔ)上,無(wú)論是對(duì)新的還是已有的Java服務(wù)器項(xiàng)目來(lái)說(shuō)都是個(gè)很好的選擇。Flex、BlazeDS技

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論