InfoQ:富互聯(lián)網(wǎng)應(yīng)用之美_第1頁
InfoQ:富互聯(lián)網(wǎng)應(yīng)用之美_第2頁
InfoQ:富互聯(lián)網(wǎng)應(yīng)用之美_第3頁
InfoQ:富互聯(lián)網(wǎng)應(yīng)用之美_第4頁
InfoQ:富互聯(lián)網(wǎng)應(yīng)用之美_第5頁
已閱讀5頁,還剩188頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1RIAAIARIA統(tǒng)到尖端應(yīng)用,從復(fù)IA有兩個選擇。Flash平臺(包括瀏覽器中的Flash播放器和桌面的AIR客戶端應(yīng)用)幫助定義了RIA應(yīng)用空間,在很多場景和開發(fā)者中保持了領(lǐng)先地位。最近,隨著Ajax技術(shù)(這也暴露了之前沒有充分利用Web瀏覽器的能力)的出現(xiàn),并逐漸轉(zhuǎn)向HTML5,Web瀏覽器自身Adobe(幾年前與Macromedia合并了)占據(jù)了RIA領(lǐng)域的主導(dǎo)地位。Flash播放器仍然是下在Flash可以運行在所有主流平臺和主要設(shè)備上,很顯然,基于sionalRIADreamweaver功能,我們即將到來的HTML交互設(shè)計工具(還未命名),基于jQuery的工作者2IAAdobe全球平臺技術(shù)推廣總監(jiān)3聯(lián)互聯(lián)網(wǎng)像一條巨大而充滿吸力的紐帶,把各種IT年中,互聯(lián)網(wǎng)從不缺乏優(yōu)秀的技術(shù)創(chuàng)新,其中RIA(富互聯(lián)網(wǎng)應(yīng)用)及其相關(guān)技術(shù)便是其中vaJavaFXFlashFlexSDKRIA領(lǐng)域,而且由于Flash的普及(Flash播放器是下載次數(shù)最多的獨立軟件),F(xiàn)lex目前應(yīng)該跨平臺的插件,能在微軟的.NET上交付炫目的多媒體體驗和有豐富交互功能的Web應(yīng)用,RIAFlexRIAFlex地位。直到HTML5及其HTML亮麗的風(fēng)景線,打破了RIA領(lǐng)域的格局。大家開始真正的認(rèn)識到,瀏覽器對外部插件的需求(比如Flash)。當(dāng)然,F(xiàn)lash/Flex的特點之一也是完成HTML無法完,現(xiàn)在這一點還是真的嗎?HTML5提供了更優(yōu)秀的Web元素處理機制,提CanvasVideoAudio元素,提供對本地離線存儲的4覽器的因素同樣不可忽視。目前市場上占據(jù)瀏覽器最大份額的IE瀏覽器的TMLFlexHTML5的盛宴,無論是你想進(jìn)入RIA領(lǐng)中,我都建議你仔細(xì)閱讀這本RIA迷你書的每一篇文章,這些內(nèi)容是RIA際從業(yè)者的知識共享和經(jīng)驗總結(jié),范圍之廣涉及趨勢、技術(shù)、框架、語美,讀起來很美!5序一 1序二 3虛擬座談會:RIA和AJAX技術(shù)的現(xiàn)狀與展望 6AJAX應(yīng)用開發(fā):實踐者指南 14例研究:ECLIPSE富AJAX開發(fā)平臺在CASSOFTWAREAG項目中的應(yīng)用 22使用FLASHBUILDER4BETA進(jìn)行數(shù)據(jù)為中心的開發(fā) 32FLEX技術(shù)在企業(yè)級開發(fā)中的應(yīng)用 38FLEX開發(fā) 48SPRINGBLAZEDSINTEGRATION簡介與入門 56JAVA序員學(xué)習(xí)FLEX和BLAZEDS的十三個理由 66FORESTKEYSILVERLIGHT 2虛擬座談:HTML5來了,JAVASCRIPT框架會如何發(fā)展 75RICHCLIENT/RIA原則與實踐 83設(shè)計者-開發(fā)者工作流中的迭代模式 986作者ScottDelap譯者王波位對社區(qū)有著卓越貢獻(xiàn)的技術(shù)精英,對此進(jìn)行了專門的訪問。文中我們可以看到復(fù),大家可以和現(xiàn)在RIA和Ajax的進(jìn)行比較,可能會發(fā)InfoQEmailRIAAjax小組召集了多位對社區(qū)有著卓越貢獻(xiàn)的技術(shù)精英,他們是:“SFEIRAuthorOnGWT.com“SFEIRAuthorOnGWT.com公司的首席技術(shù)官DidierGirardnanDashilgrim戶端平臺宣傳部門主管TimSneathanStewartRIAWeb導(dǎo)而非“應(yīng)用程序”。然而,去年隨交互瀏覽等嵌入了“迷你應(yīng)用程序”,我們已經(jīng)看到了這種現(xiàn)象正加速改Web應(yīng)用程序早已出現(xiàn),但我們正經(jīng)歷著這場改變:開發(fā)反應(yīng)靈敏的Web應(yīng)用程序技術(shù)還不成熟Ajax勉強組合了一些技術(shù)和標(biāo)準(zhǔn)來給終端用戶提供開發(fā)應(yīng)用程序所需的簡要工具7RIA別無選擇,這正是它們在客戶端/服務(wù)器模型中過去常常用到的。然而,企業(yè)級RIA在美國lRIA的抽象層來跨頁面支持狀態(tài)屬性,豐富的控件和在客戶端/服務(wù)器開發(fā)之間的無縫開發(fā)。下過去的20年間,最大的進(jìn)步莫過于像Silverlight和Flex等框架提供的豐富圖形功能,以及更加強大的編程工具和以往單單用HTML和JavaScript都難以實現(xiàn)的架構(gòu)。我們終于可以集應(yīng)用到NBC轉(zhuǎn)播奧林匹克運動會中,奧巴馬總統(tǒng)的就職典禮也應(yīng)用了該技術(shù)。除了RIA的詞來形容JavaFX了。我知道的最大型的RIA應(yīng)用程序是TweetDeck,Stewart:我仍然不確定這項技術(shù)是否已經(jīng)成功。我想在咱們擴展特定的范疇來包含像小組視頻、更豐富的桌面應(yīng)用程序和豐富的瀏覽器應(yīng)用程序,很明顯帶有諸多RIA的元素,ARIA開A日歷和其他與OS進(jìn)行的本地操作。你認(rèn)為RIA平臺在未來的幾年會著重集成這些功能8bSneath:我認(rèn)為用戶對于最佳應(yīng)用程序體驗的需求是必然的,我母親并不明白Web和Windows應(yīng)用程序之間的區(qū)別,她只想完成工作,無論她是在本地進(jìn)行繪圖抑或是利用因微軟客戶端平臺的其中一項優(yōu)勢是具備兼容的解決方案來滿足兩種需求:使用Silverlight,我們針對發(fā)布跨平臺的大型解決方案提供了輕量級的運行時;同時我們有WPF,它是RIAPilgrim:這個問題提得很好。我覺得開發(fā)RIA解決方案可以給Web瀏覽器用戶帶來更好的Live環(huán)境。利用JavaEnterpriseWebAPI開發(fā)企業(yè)級應(yīng)用程序就會非常有趣了,好比泛濫的Web用程序(JSR186,286和WSRP)。9我認(rèn)為用戶(消費者)將影響應(yīng)用程序的成功與否,例如:TweetDeck。銷售捆綁的企業(yè)級Almaer:我們兩者都需要。我們鐘情于互操作性,但那會給開發(fā)人員帶來麻煩(就像Java能。eb用戶進(jìn)行干擾的可信的模型,我之前已經(jīng)討論過。 IARIADashCurlWeb展性、可靠性、安全性、性能和可預(yù)測性。在過去的15年,從客戶端-服務(wù)器應(yīng)用程序的轉(zhuǎn)變,大大地降低了TCO(總體成本)。坦白的說,視頻在這些應(yīng)用程序中并沒有很高的優(yōu)先級。那就是Curl為400家大企業(yè)客戶外,我認(rèn)為我們還將在來年看到AJAX更加依賴于客戶端框架。我常常驚嘆于眾多高手能夠提取HTML和JavaScript代碼,但創(chuàng)建像Gmail、OutlookWebAccess或者Facebook這樣的高端體驗所需要的技巧,卻只有少部分的開發(fā)者掌握,即使有像jQuery和ASP.NETlight曾經(jīng)有那么一段時間,人們會認(rèn)為創(chuàng)建基于Email客戶端的Web應(yīng)用程序的人是瘋了?,F(xiàn)ailBespin的原因是為了弄清楚我們可以多深入地建立富Web代碼編輯器,而不是華麗的代碼。我預(yù)opWebiWorkcom就會給你一點啟發(fā)。GirardRIA需入即時狀態(tài),我們常常網(wǎng)聊的同時,卻不能做其他的事情。隨著人們上網(wǎng)的時間越來越長,ok4.相對于其它的框架和語言(如:Ajax、GWT、Curl、Flex、Silverlight、JavaFx等),它的Silverlight其中一項核心競爭力就是在如此小的程序包內(nèi)卻實現(xiàn)了如此強大的功能。如果你rameworkVisualStudioomAdobeIllustratorExpression設(shè)計套件工具的基于XML的標(biāo)記語言。全部加起來還不Dash:Curl的最大優(yōu)勢是開發(fā)者的生產(chǎn)力(一種涵蓋了一系列的文本、圖形、網(wǎng)格以及面向大容量的數(shù)據(jù)處理、把客戶端-服務(wù)器代碼快速PilgrimJavaFXJava:ApacheAlmaerWebAjax這些技術(shù)前面不會標(biāo)有公司名。既然已許多開發(fā)者懂得java語言,他們都是忘我的RIA開發(fā)者,對于java開發(fā)人員轉(zhuǎn)到GWT天時間GWT應(yīng)用程序的運行時。它是廣泛使用:GWT應(yīng)用程序可以在所有瀏覽器之一,Adobe做得比任何公司都好,我們正給我們的開發(fā)者社區(qū)注入這種精神。我也覺得ActionScript非常強大。從第一個版本至今經(jīng)歷了漫長的過程,它是真正的OOP語言,對于時候自己動手。我已經(jīng)編寫完SplitPane.fx和BorderLayoutPanel.fx組件。然而,方便可用,第二個致命的弱點是JavaFX媒體目前沒有錄制功能。換句話說,使用的客戶端沒有媒體編ionicArtsWebOK網(wǎng)站)非常困難。必須加強JavaMediaComponentAPI。如果你準(zhǔn)備進(jìn)行流媒體錄制的話,和JMC云可能超過Adobe,如果它們開始視頻的子像素呈現(xiàn)并提供混響音效,例如,錄制rl可以解決高性能和安全需要之前,嘗試使用Ajax和Flex都失敗了。同時,視頻呈現(xiàn)不是我SneathSilverlight上大量的安裝。事實間,我們看到數(shù)以千萬計的電腦進(jìn)行安裝,機器上Silverlight的安裝率是FireFox和GoogleChrome的總和。很自然地,我們不會滿足于取得的成績,我們會繼續(xù)對該平臺進(jìn)行投入,圍仍然有很多“騷擾Flash”。另外一個弱點是我認(rèn)為Flash需要適應(yīng)Web生態(tài)系統(tǒng)。很多東西像SEO、鏈接、分析技術(shù)都建立在HTML模型之上,所以大塊的Web如何運作以及賺錢ionScriptMXMLJavaFXJava比4種好而4種又比6種好。但是我們使用Curl的人相信一種語言包含演示層和邏輯層。用最適合他們的語言組合才是最有生產(chǎn)力的。如果每個人都同意那種說法,我們認(rèn)為每個GirardGWT對客戶端和服務(wù)器端使用相同的語言。這實在ght相同的編程模型,它只是整個.NETFramework的一個子集。實際上,你可以利用在基于任何修改。由于.NET的普及性,你不僅僅可以分享代碼還可以跨越多種不同的設(shè)備類型來分享技巧:從Xbox->移動設(shè)備->Web瀏覽器->Windows客戶端應(yīng)用程序->云數(shù)據(jù)中心服務(wù)PilgrimJavaFXJava。實質(zhì)上,如果你使用EJB、JMS或者使用客戶端服務(wù)器協(xié)議,像無線發(fā)送XML。我看不到JavaFX對服務(wù)器端的用相關(guān)內(nèi)容:GrailsAjax比拼創(chuàng)建并擴展ApacheWicketWeb應(yīng)用JoeWalker談DWR利用GWT開發(fā)高性能Ajax應(yīng)用、JavaScript多線程編程簡介Ajax應(yīng)用開發(fā):實踐者指南作者成富Ajax技術(shù)的出發(fā)點在于改變傳統(tǒng)Web應(yīng)用使用時的“操作-等待頁面加載-操作”的用戶x模式是“操作-操作-操作”。用戶并不需要顯式地等待頁面重新加載完成,而是可互Ajax以流行的一個重要原因。本文簡要介紹了Ajax目前的Web應(yīng)用開發(fā)基本上都是圍繞富互聯(lián)網(wǎng)應(yīng)用(RichInternetApplication,RIA)展開。,Ajax所需技術(shù)的學(xué)習(xí)曲線也較平滑,容易上Ajax應(yīng)用開發(fā)的各個方面以及相關(guān)的最佳實踐,但對一些細(xì)節(jié)內(nèi)容沒Ajax簡介Ajax發(fā)點在于改變傳統(tǒng)Web應(yīng)用使用時的“操作-等待頁面加載-操作”的用戶交互作-操作”。用戶并不需要顯式地等待頁面重新加載完成,而是可以不斷地與頁面進(jìn)行交互。頁面上的某個局部會動態(tài)刷新來給用戶提供反饋。整個交互過程更加平滑Ajax指南Ajax技術(shù)的出現(xiàn)使得應(yīng)用中一部分的邏輯從服務(wù)器端遷移到了Ajax是僅少量使用Ajax技術(shù)來適當(dāng)增強用戶體驗Ajax開發(fā):實踐者指南 (AjaxLite),另外一種則是大量使用Ajax技術(shù)來達(dá)到與桌面應(yīng)用相似的用戶體驗(AjaxDeluxe),提供諸如鼠標(biāo)右鍵、拖拽和級聯(lián)菜單等。開發(fā)人員應(yīng)該根據(jù)應(yīng)用的特征選用合適容性JavaScriptCSS術(shù),但是不同的瀏覽器廠商對于這些標(biāo)準(zhǔn)的實現(xiàn)程度有著很大的和支持某種瀏覽器所需的代價來確定。雅虎提出的分級式瀏覽器支持(GradedBrowserSupport)是一個很好的參照,從其中給出的A級瀏覽器開始是一個不錯的選擇。從特定的WebKit以了。而文檔對象模型(DOM)和瀏覽器對象模型(BOM)部分的兼容性問題相對較多,這主要因為瀏覽器長生對規(guī)范的支持程度不同以及各自添加了私有實現(xiàn)。使用一個流行的即可。這些元素既有與文檔結(jié)構(gòu)相關(guān)和富含語義的元素,也有與頁面的展示相關(guān)的元素。Ajax開發(fā):實踐者指南編寫HTML文檔的時候首先需要選用合適的文檔類型聲明(DTD)。目前來說最合適的HTMLde用。在HTML文檔編寫完成之后,最好使用W3C提供的HTML文檔驗證器來驗證文檔。CSS則集是一SSC和頁面布局這一塊的兼容性最差,尤其在盒模型(boxmodel)、浮動定位等方面。而在顯示樣。一些招數(shù)(hack)。招數(shù)是利用瀏覽器本身對CSS規(guī)范支持的不完善或是實現(xiàn)上的bug來識JavaScript來檢測當(dāng)前瀏覽器并應(yīng)用樣式。招數(shù)SS用IE獨有的條件注釋。Ajax開發(fā):實踐者指南M素和內(nèi)容。通過DOM規(guī)范提供的API就可以完成對文檔的查詢DOM修改一般都是通過響應(yīng)用戶的事件而發(fā)生的。這些DOM操ML瀏覽器端可以使用DOM操作或是模板技術(shù)來tAjax應(yīng)用與用戶的交互是通過響應(yīng)用戶事件的方式來完成的。瀏覽器負(fù)責(zé)捕獲用戶的行為的事件傳播流程是從文檔的根節(jié)點開始向下傳播到目標(biāo)節(jié)點(捕獲階段),然后再往上傳播回根節(jié)點(冒泡階段)。當(dāng)事件傳播到某個節(jié)點上的時候,就會觸發(fā)此節(jié)點上綁定的處理方法。 (IE只支持冒泡階段。)需要注意的是事件處理方法中this所指向的對象的值,有可能是當(dāng)前節(jié)點或是window對象。通過JavaScript庫提供的支持來綁定事件處理方法,可以避免這Ajax開發(fā):實踐者指南li元素添加鼠標(biāo)點擊的事件時,可以把該事件添加到其父節(jié)點<ul>上。在完成對ToolsPrototype不同程這個構(gòu)建過程可以包含的步驟有:1.JavaScript代碼的潛在錯誤和代碼風(fēng)格檢查。通過集成JSLint可以找到代碼中潛在的問題cript少頁面加載時的HTTP請求個數(shù);通過縮減可以去掉JavaScript代碼中多余的空白字符這些操作的工具有很多,ApacheAnt就可以完成合并,JSMin和YUICompressor可以完4.圖片文件的壓縮。通過對圖片文件進(jìn)行格式轉(zhuǎn)換和壓縮,可以在不損失質(zhì)量的前提下,Ajax應(yīng)用的測試包含服務(wù)器端和瀏覽器端兩部分。對于服務(wù)器端來說,測試的技術(shù)和工具Ajax開發(fā):實踐者指南都已經(jīng)比較成熟。只需要根據(jù)服務(wù)器端采用的技術(shù)來進(jìn)行選擇即可。一個比較重要的原則HTMLQUnitDojoDOH等,也存在一些集成測試的工具,如DOHrobot和Selenium等。就單元測試來說,目前對JavaScript,而對于包含了與頁面上節(jié)點交互的代碼則較Ajax應(yīng)用的調(diào)試一直是一個比較麻煩的問題,其主要原因是不同瀏覽器之間存在著各種各樣的兼容性問題,同一瀏覽器的不同版本之間也會存在很多不同。為了在所支持的瀏覽器FirefoxFirebugIEdevelopertoolbar出現(xiàn)改頁面上的DOM結(jié)構(gòu)和CSS樣式來進(jìn)行試驗。找序中變量的值以及調(diào)用JavaScript方法來改變應(yīng)用的內(nèi)多的Ajax應(yīng)用都是單頁面應(yīng)用(SingleApplication,SPA)。用戶通常會在單個頁面上使用比較長的時間而不關(guān)閉瀏覽器。在用戶操作過程中產(chǎn)生的一些小的內(nèi)存泄露會累積起來,慢。面對內(nèi)存泄露問題,一般來說需要注意下面幾點:熟悉常見的內(nèi)存泄露模式。最典型的是由于錯誤使用閉包造成的包含DOM節(jié)點的循環(huán)Ajax開發(fā):實踐者指南3.當(dāng)內(nèi)存泄露發(fā)生的時候,使用Drip等工具來找到發(fā)生泄露的節(jié)點并修正。Ajax全問題,同時也帶來了一些新的安全隱患。傳統(tǒng)Web應(yīng)用中存在的跨站點腳本攻擊(XSS)、SQL注入和跨站點請求偽造(CSRF)等安全問題在Ajax候?qū)λ械臇|西進(jìn)行轉(zhuǎn)義(escape)。只對那些明確知道是安全的(白名單)的東西恢復(fù)轉(zhuǎn)義(unescape)。對于CSRF的解決辦法是對所有的請求添加一個驗證令牌,用來確保請求是AjaxJSONAjax應(yīng)用的服務(wù)器端暴露JSON格式的對象方法(如Array)的方式來竊取數(shù)據(jù)。Ajax應(yīng)用性能的決定因素在前端。簡單來說有下面幾條基本的原則:減少與服務(wù)器端交互的次數(shù)與數(shù)據(jù)大小。這點主要是減少瀏覽器端發(fā)出的HTTP請求的到的JavaScript和CSS文件的合并稍后加載或延遲加載。因此,在HTML文檔中,對CSS文件的引用要放在文檔的上面,headJavaScriptbody最后一個子節(jié)點出現(xiàn)。部分的JavaScript文件可以等到頁面完全加載成功之后再延遲加載。GoogleSteveSouders工作。他寫的兩本書《高性Ajax開發(fā):實踐者指南介oWeb.0技術(shù)也有比較濃厚的興趣。他的個人網(wǎng)站是料?Ajax應(yīng)用風(fēng)格?精通CSS--高級Web標(biāo)準(zhǔn)解決方案aScriptorerLeakPatternsSheet?AjaxSecuritycationsusingtheDojoObjectiveHarness相關(guān)內(nèi)容:X如何選擇最合適的Ajax框架?應(yīng)用JSF、Ajax和Seam開發(fā)Portlets(1/3)使用JSF、Ajax和Seam開發(fā)Portlets(2/3)使用JSF、Ajax和Seam開發(fā)Portlets(3/3)作者CraigWickesser譯者連小劍本文案例研究的重點將會放在EclipseRAP(富Ajax平臺)以及它是如何應(yīng)用到CASPIA (客戶關(guān)系管理)領(lǐng)域,尤其是在SME(中小企業(yè))方面。近年來CASSoftware的軟件產(chǎn)品在CRM領(lǐng)域獲得了非常好的聲譽,包括他們在特定領(lǐng)域諸如面向教育、自動代理權(quán)和基CRM產(chǎn)品。近來CASSoftware正在開發(fā)被稱為CASPIA(個人信息助理)的一個產(chǎn)品,這個產(chǎn)品會以SaaS (軟件即服務(wù))的方式發(fā)布,這也是他們首個以這種方式發(fā)布的產(chǎn)品。該產(chǎn)品使用了許多技術(shù),我們會在以后作詳細(xì)介紹。這篇案例研究的重點將會放在EclipseRAP(富Ajax平臺)未來他們的產(chǎn)品的發(fā)展方向。CASSoftwareAG為自由職業(yè)者以及中小企業(yè)開發(fā)CRM(客戶關(guān)系管理)軟件。對CAS來說,受眾定位在那些不使用特定CRM應(yīng)用、而是更傾向于用工具和應(yīng)用的組合來SSPIA供“標(biāo)準(zhǔn)”的CRM功能,而且還可以有管理市場戰(zhàn)略、電子郵件整合以及個格的界面體驗。用戶界面根據(jù)人類工程學(xué)(ergonomics)來開發(fā),使用了人們熟悉的窗體部等等用戶對web應(yīng)用程序所期望的很多東西。另外,在線功能使所有入到CASPIA的開發(fā)架構(gòu)中來看看開源案概述CRM經(jīng)出現(xiàn)好幾年了,桌面的和在線的都有,在最近一段時間里功能變得非常AwebebPIAAP把它描述稱為一個為開發(fā)人員提供了下述功能的框架:通過使用Eclipse開發(fā)模型、基于通過使用Eclipse開發(fā)模型、基于Eclipse工作臺擴展點的插件以及用SWTAPI(以及JFace)開發(fā)的組件工具箱來構(gòu)建基于Ajax技術(shù)的富web應(yīng)用RAP非常像Eclipse覽器訪問。這主要是因為它提供了一套特殊實現(xiàn)的SWT(一個SWTAPI的子集)。 CASPIA用ElipseRAP在表示層中構(gòu)建用戶界面有以下原因:用戶感觀-ElipseRAP可以構(gòu)建出非常符合人體工程學(xué)而且可切換主題的富用戶界面,開發(fā)效率-AJAX和JavaScript被包裝成對開發(fā)者透明的組件,從而使得程序員可以用他RAPJavaScriptHTMLCSS來開發(fā),但是它Elipse和它的產(chǎn)品族擁有最好的軟件設(shè)計和體驗,RAP也不例外。單一代碼庫-RAP能夠被編譯為AJAX或者RCP應(yīng)用程序。OSGi它在別的CAS產(chǎn)品中的使用提供了良好的模塊性和SGii件包,這些包可以作為通用組件應(yīng)用到不同的應(yīng)用程序中。每個模塊都提供了一些擴展點,多應(yīng)用程序當(dāng)中,而聯(lián)系人管理模塊就比較特殊,只會被用到CRM相關(guān)的CASPIA的另一部分是商業(yè)邏輯和典型的服務(wù)器端相關(guān)功能,即服務(wù)核心或者EIM(企業(yè)信息管理)。設(shè)計和開發(fā)EIM是把它作為CAS整個產(chǎn)品線的核心。服務(wù)核心提供了通過SunMySQL含了CAS特別開發(fā)的定制組件。定制組件包含了一個可擴展的數(shù)據(jù)模型、一套定制的查詢語言(CAS-SQL)和一個權(quán)限管理組件。該權(quán)限管理組這套權(quán)限管理系統(tǒng)和Oracle的OLS比較類似,而該系統(tǒng)還支持MySQL之外的其它數(shù)據(jù)庫,RAP盡量多的邏輯都放在服務(wù)器端,從而使單元測試(代碼)非常健壯。然而,不是所有的東西Presenter)等等來實現(xiàn)用戶界面,將視圖從邏輯當(dāng)中解耦出來,從而使單元測試變得相對容/***Memoryleaktest.Createsanddisposesanobjectsandchecksiftherearesomeleakinginstances.*testMemoryLeak:function(){varms=de.tests.MemoryLeakUtil.getMemorySnapshot();//createvardcnewde.cas.qx.ui.widget.calendar.datechooser.DateChooser();uicoreWidgetflushGlobalQueues//disposeosevarms=de.tests.MemoryLeakUtil.getMemorySnapshot();varmsg=de.tests.MemoryLeakUtil.checkMemoryLeak(ms1,ms2);thisassertEquals",msg,"Therearesomeleakingobjects!");DateChooserDateChoose是CAS開發(fā)oxooScriptRAP另外一個問題是處理UI的異步和動態(tài)的狀態(tài)。有一些工具可以用來記UI限性。在CAS對web應(yīng)用中有時也會遇到的一個問題是對服務(wù)器和/或數(shù)據(jù)層進(jìn)行測試。通常單元測試代碼們的測試。這種類型的測試有其缺陷,CAS的是用假對象,在測試中用假對象來代替“真對象”。在java中有很多假對象的框架,包括樣的假對象框架比如JSMock和Mock4JS。Eclipse基本上包含了相當(dāng)于JUnit的測試的功能,不同的是它可以使需要OSGi環(huán)境的測試正常運行。如果您需要執(zhí)行期間更新UI的單元測試,您可了用戶界面交互的RAP的測試用例:ublicclassRapJUnitTestextendsRAPTestCaseicvoidtestOpenViewtry{gepagegetPageeshowVieworgeclipserapdemoDemoTreeViewPartIcatch(PartInitExceptione){ackTrace}assertEqualsgetPagegetViewReferences().length);getPagehideView(getPage().getViewReferences()[0]);assertEqualsgetPagegetViewReferences().length);}privateIWorkbenchPagegetPageworkbenchPlatformUIgetWorkbenchindowwindowworkbenchgetActiveWorkbenchWindowgetActivePage}}試一個實際的UI組件來驗證可視視圖的數(shù)量。而這也正展示了如何輸入框中鍵入值這樣的測試UI的能力將會是CAS在未來界面組件APRAP,有兩種控件,izhong是“復(fù)合”式("compound")另外一種是“自構(gòu)建”ownerdrawnRAP到一起來提供一種新的UI功能。而述了整個過程。對于定制組件的開發(fā)流程,教程中列出了四個主要的步驟:為組件創(chuàng)建一個運行在服務(wù)器上的Java實現(xiàn)為組件創(chuàng)建一個運行在瀏覽器上的JavaScript實現(xiàn)用Java創(chuàng)建一個適配器,這個適配器把JavaScript組件和Java組件連接起來通過在org.eclipse.rap.ui.resources擴展點上增加插件的方式注冊該JavaScript文件歷組件提供了很多功能比如左上角的一個迷你日歷,中間的一個比較詳細(xì)的日件由大個工具條,它提供的功能類似于很多應(yīng)用例如MicrosoftOffice和MicrosoftOutlook的工具RAP通過使用層疊式樣式表(CSS)提供了主題功能,同時使應(yīng)用可以接受加在RAP,在設(shè)計和開發(fā)階段必須對下面幾點加以考慮。首先,開發(fā)人員必須熟悉HTML、JavaScript、CSS和Qoodoo。我提到這個是因為RAP的一個優(yōu)越之處就是開使控件具有跨瀏覽器特性。寫過RAP核心組件的開發(fā)人員竭盡全力來確Qooxdoo中有望在這方面得以增強從而使開發(fā)人的不是同一個版本。極端情況下,對RAP的開發(fā)人員來說,這意味著一ooAPI問題GUI不是反復(fù)創(chuàng)建它們的對象池和緩存來提升一些性能。盡管CAS所所幫助,但是對于完全解決他們在InternetExplorer上的性能問題還遠(yuǎn)遠(yuǎn)不夠,rnet問題是用一種連續(xù)累計的構(gòu)建過程開發(fā)和部署整個應(yīng)用程序的RAP組uinox造,然而它們在使用Ant的過程中發(fā)現(xiàn)文檔太少而且有很多奇怪的問題(比如,動態(tài)生成構(gòu)最終確保夜間構(gòu)建的正常運行花費了大量的監(jiān)控和測試。WAR這個文件中包含了所有的商業(yè)組件、運行時環(huán)境、EquinoxRAPCASPIAEIMOSGiRAP一起集成到應(yīng)ebRMIEIMWAR文件的"lib"目錄中。第二步涉及到對web.xml中servletbridge的特殊配置。CAS用到了servlet橋中的“extendedFrameworkExports”EclipseRAP他們發(fā)現(xiàn)用EclipseRAP后開發(fā)人員的效率JavaEclipse的集成開發(fā)環(huán)境、調(diào)試工具和CAS而走過了陡峭的學(xué)習(xí)曲線,每個人都會樂于使用RAP來S方向RMCASEclipseRAP們還將于2009年2月在匈接?EclipseRAPBook(2008年12月)?GUI測試工具oSquishforJava相關(guān)內(nèi)容:Ajax、Comet、HTML5WebSockets技術(shù)比較分析EclipseRAP1.0給Ajax帶來了RCP和OSGiGrailsAjax端插件大比拼選擇你所需要的Ajax框架作者TimBuntel譯者曹如進(jìn)AdobeFlashBuilder4的優(yōu)勢在于是它的跨平臺和跨瀏覽器特性,它允許程序在所有的操和所有的瀏覽器上以同樣的方式運行。它為開發(fā)者們提供了更多的機會來創(chuàng)建以中心的富互聯(lián)網(wǎng)應(yīng)用。這篇文章用創(chuàng)建一個簡單數(shù)據(jù)管理應(yīng)用的主要步驟向大家AdobeFlashBuilderbetaFlex,不管是新手還是老手,提供了更多的機會來創(chuàng)管理系統(tǒng),或者第三方的支付服務(wù)進(jìn)行集成。那么你只需要連接到相應(yīng)的服務(wù)器或者服務(wù),知道連接一個SOAP服務(wù)使用的MXML標(biāo)簽不同于連接ColdFusion組件或者PHP類。此外,F(xiàn)lex開發(fā)者可以快速的連接到數(shù)據(jù)和服務(wù),并將它們綁定到富使用FlashBuilder4beta進(jìn)行以數(shù)據(jù)為中心的開發(fā)主要包括三個步驟:定義一個數(shù)據(jù)/服務(wù)模型將服務(wù)操作綁定到Flex組件上實現(xiàn)高級的數(shù)據(jù)處理,例如分頁和數(shù)據(jù)管理OracleFlex看它的數(shù)據(jù)以及新增,更FlashBuilderbeta數(shù)據(jù)為中心的開發(fā)為了更好的理解這篇文章,你需要使用下面的軟件和文件:rbeta下載(InfoQ中文站獨家高速提供)識FlexBuilder用經(jīng)驗會很有幫助,但這不是必要的。你需要熟悉一種服務(wù)端技P步:創(chuàng)建一個服務(wù)用一個服務(wù)來完成該任務(wù):它可以接受來自Flex發(fā)來的請求并傳遞到數(shù)據(jù)庫中;還可以將中的數(shù)據(jù)用一種可理解的格式發(fā)回給Flex。這樣的遠(yuǎn)程服務(wù)有著相當(dāng)多的實現(xiàn)方式,F(xiàn)lashBuilderbetaColdFusionPHPJava創(chuàng)建服務(wù),而其他類型的服務(wù)可以像SOAPweb服務(wù)或者HTTP服務(wù)一樣使用。使用ColdFusion是個理想的選擇,因為它可以和任何后端數(shù)據(jù)庫交互,且它語法的簡單性使得你僅僅需要少量的標(biāo)簽即可完成創(chuàng)建一個數(shù)據(jù)接入服務(wù)。加之ColdFusion支持一個高性能的名為AMF的協(xié)議與Flex應(yīng)用使用ColdFusion,你需要為Flex應(yīng)用程序執(zhí)行的每一個數(shù)據(jù)操作創(chuàng)建一個ColdFusion組件 (CFC)函數(shù),如:獲取一張表的所有記錄,向表中增加一條新的記錄,以及刪除一條記錄等CFC中的函數(shù)可以返回弱類型和強類型的數(shù)據(jù)(例如,如果你正在采用一種更加面向?qū)ο蟮姆绞竭M(jìn)行開發(fā)的話,可以使用getAllRecords函數(shù)返回一個ColdFusion的查詢對象或者一個對象數(shù)組);Flex兩種類型的數(shù)據(jù)都能處理。最后一定要確保cffunction標(biāo)簽的access性標(biāo)記為remote后再測試組件。好了,到此為止你已經(jīng)可以在Flex應(yīng)用程序中使用這個FlashBuilderbeta數(shù)據(jù)為中心的開發(fā):在FlashBuilder中創(chuàng)建模型STful們在服務(wù)端如何實現(xiàn),因為現(xiàn)在將結(jié)果綁定到UI組件、編寫代碼來調(diào)用操作都能統(tǒng)一到一FlashBuilder4beta會自動檢查內(nèi)部服務(wù)并創(chuàng)建樹狀視圖。在FlashBuilder4beta中選擇數(shù)據(jù)->連接到ColdFusion(或者你的服務(wù)使用到的技術(shù))。對ColdFusion而言,你只需要簡單地提供一個想使用的服務(wù)名稱(例如,EmployeeSvc),并將它定向到文件系統(tǒng)中的CFC即可。這一步驟會依服務(wù)使用技術(shù)的不同而略有變化(例如,你也許會為web服務(wù)指定WSDL),但是結(jié)果一定是一樣的:FlashBuilder4beta通過在內(nèi)部檢查服務(wù)來CFC回了一個ColdFusion查詢對象,而FlashBuilder4beta看到的只是僅是一堆數(shù)據(jù)而已。為了關(guān)聯(lián)操作結(jié)果的數(shù)據(jù)類型,F(xiàn)lashBuilder4beta允許你手工配置操想要設(shè)置弱類型服務(wù)的返回類型,你可以右鍵點擊數(shù)據(jù)/服務(wù)面板(例如,getAllItems操作),然后選擇配置返回類型。向?qū)椭憬⒎?wù)端弱類型數(shù)據(jù)與Flex應(yīng)用程序中的強類型需要為操作返回的自定義類型指定一個名稱,例如可以把返回的每一條記錄稱為Employee員工的id設(shè)置為數(shù)字(見圖1)。FlashBuilderbeta數(shù)據(jù)為中心的開發(fā)接到UI控件用數(shù)據(jù)網(wǎng)格(datagrids),列表控件(listboxes),表單域(formfields)等等。這些組件可以顯一開始就在設(shè)計視圖中對UI進(jìn)行布局,以及綁定操作到組件上會很簡單。只要切換編輯器從源代碼視圖到設(shè)計視圖,你就可以從組件面板中拖動組件到應(yīng)用程序的畫布(canvas)上FlashBuilderbeta數(shù)據(jù)為中心的開發(fā)選擇DataGrid組件(在組件面板里數(shù)據(jù)控件組的下面),將它拖放到頁面中。你會發(fā)現(xiàn)它沒示從你的服務(wù)操作中獲取的數(shù)據(jù),你只需要簡單地將數(shù)據(jù)/服務(wù)面板中的操作拖拽到網(wǎng)格上需事先任何事件監(jiān)聽器,無需知道服務(wù)端是ColdFusion還是Java或者SOAP。你還可以用很多其他方法來快速創(chuàng)建基于數(shù)據(jù)類型和服務(wù)的應(yīng)用程序UI。如可以從一個數(shù)據(jù)類型生成會觸發(fā)操作的執(zhí)行(例如,調(diào)用保存操作),還可以將操作拖拽到圖表控件上等等。性FlashBuilder4beta以數(shù)據(jù)為中心的新特色功能,可以極大地提高你在創(chuàng)建以數(shù)據(jù)為中心的,etaFlex觸這個技術(shù)的新手,F(xiàn)lashBuilder4beta都驗室的視頻和教程哦.TimBuntel是FlashBuilder(以前叫做FlexBuilder)的高級產(chǎn)品經(jīng)理。在2007年加入Flex小FlashBuilderbeta數(shù)據(jù)為中心的開發(fā)相關(guān)內(nèi)容:用FlashBuilder4beta建立連接BlazeDS遠(yuǎn)程端的Flex應(yīng)用程序用FlexBuilder構(gòu)建即時聊天應(yīng)用作者池建強各種IT互聯(lián)網(wǎng)生態(tài)圈。作者根據(jù)自己十幾聯(lián)網(wǎng)化趨勢,并著重介紹了RIA技術(shù)用戶體驗,都有很大的不同。舉個簡單的例子,比如開發(fā)語言,最早在2000年左右,大家ubyPython富多彩的互聯(lián)網(wǎng)應(yīng)用,當(dāng)然這其中也少不了Flex技術(shù)。而為企業(yè)客戶構(gòu)建的應(yīng)用,則更多越來越多的發(fā)現(xiàn),很多大規(guī)模的互聯(lián)網(wǎng)站點是基于Java或C#構(gòu)建的,也有一些企業(yè)說了這么多,需要為企業(yè)級應(yīng)用系統(tǒng)做一個定位。事實上這個概念在業(yè)界并不是十分清晰,沒有一個明確的定義,什么是企業(yè)級,為什么叫企業(yè)級呢?有的觀點是從系統(tǒng)規(guī)模上劃分,簡單,主要是用來區(qū)分互聯(lián)網(wǎng)應(yīng)用和個人軟件。什么是互聯(lián)網(wǎng)應(yīng)用呢,四大門戶(如新浪、網(wǎng)易等)、百度和淘寶、各種SNS網(wǎng)站、博客系統(tǒng)和微博系統(tǒng)等等;個人軟件呢,就是指安PC客戶端軟件,例如編輯器、繪圖軟件、開發(fā)工具等。這兩種類型的應(yīng)用和IT的技術(shù)、應(yīng)用和實現(xiàn)都吸引過來,形成了一個完整而龐大的互聯(lián)網(wǎng)生態(tài)lex企勢越來越明顯,主要體現(xiàn)在以下三個方面:和表格界面,富互聯(lián)網(wǎng)應(yīng)用(RIA)的需求應(yīng)運而生,企業(yè)客戶越來越倡導(dǎo)用戶體驗,區(qū)平臺)和無線企業(yè)應(yīng)用等。新技術(shù)上實現(xiàn)作為現(xiàn)階段的IT服務(wù)提供商,必須從技術(shù)層面和業(yè)務(wù)層面去適應(yīng)和支撐這樣的趨勢變化,會變得步履艱難。RIA技術(shù)的全稱是富互聯(lián)網(wǎng)應(yīng)用(RichInternetApplication),RIA首先應(yīng)該是一個網(wǎng)絡(luò)應(yīng)用程絡(luò)上(目前主要是基于瀏覽器)運行,并且能保持其原來的功能和特征,那么我們就可以稱它們?yōu)镽IA應(yīng)用(富互聯(lián)網(wǎng)客戶端應(yīng)用)。h的插件,能在微軟的.NET上交付炫目的多媒體體驗和有豐富交互功能lex移動設(shè)備上支持Flash,盡管HTML5和CSS3來勢洶洶,但是在企業(yè)應(yīng)用開發(fā)這樣一個不是非常激進(jìn)的領(lǐng)域,考慮到Flash廣泛的群眾基礎(chǔ),最終我們還是選擇了Flex。AFlex,我們才發(fā)現(xiàn)很多問題在Flex面前迎exxxActionScriptMXMLActionScriptFlex是我們采用Flex的重要原因之一:1.可視化開發(fā),通過拖拽方式開發(fā)界面2.對于有XML和腳本開發(fā)經(jīng)驗的人員,很容易上手3.可實現(xiàn)表現(xiàn)層與后臺的真正分離4.豐富的媒體支持和動畫效果,良好的用戶體驗5.支持多種通訊方式和數(shù)據(jù)格式lex6.同時支持客戶端和瀏覽器模式7.跨平臺,支持各種操作系統(tǒng)和瀏覽器lexGAPGlobalApplicationPlatform這是一個Full-Stack首先,進(jìn)行Flex與GAP平臺的整合,包括組件化集成、前后臺通信機制的設(shè)計,在這BlazeDSIntegrationGAPFelxRemoteObject。(SpringBlazeDSIntegration是Adobe與Spring共同聯(lián)合開發(fā)一個開源項IARIA基于Adobe的開源項目Cairngorm進(jìn)行構(gòu)第三,使用Flex技術(shù)解決企業(yè)應(yīng)用中的實際問題。組織結(jié)構(gòu)的圖形化展示lex原有的組織結(jié)構(gòu)樹如下圖所示:客戶需要的展示方式可能是:也可能是:lexJavascript現(xiàn)無疑是Flex先天的優(yōu)勢。首先Flex是一種可以運行在局控制。同時,F(xiàn)lex可以通過多種通訊方式(HttpService、RemoteObject、WebService)與Server端的服務(wù)進(jìn)行數(shù)據(jù)交互,使得圖形化操作變得非常簡單,例如把人員拖到另一部門,xFlex的表格,看似簡單,實際上是包含了排序、過濾、表頭拖拽、表lex器研發(fā)工作流平臺,其核心功能是工作流引擎和流程設(shè)計器。為了開發(fā)出Web-Based(基于Web)的流程設(shè)計器,我們投入了極大的人力物力,最終采用ActiveX控的發(fā)展,基于Activex控件的流程設(shè)計器越來越顯示,例如不支持多瀏覽器,不支持國際化,在各種Windows和IE版本中的自動安裝ActiveX上去很美,但的確存在著問題。事實上我們正Flex對流程設(shè)計器進(jìn)行改造,改造完成后,上面提到的問題即可迎刃l(wèi)ex點擊事件,實現(xiàn)動態(tài)效果,而這些幾乎不需要額外編寫代碼。傳統(tǒng)的報表工具或制圖工具,BIRT或JFreeChart等,處理報表圖片時都是通過流的方式輸入靜態(tài)圖片,一旦生成,就是靜態(tài)頁面,用戶無法與之交互。而使用Flex進(jìn)行圖表的開發(fā),則可以輕易突破這一障后,繼續(xù)實現(xiàn)前后臺數(shù)據(jù)的交互和展示。例如使用CandlestickChart控件。lex管理進(jìn)行展示,通過Flex可以構(gòu)建通用么是基于文檔的管理,要么是基于視頻的處理,但它們的共同點是核心技術(shù)都采用了Flex無疑是非常明智的,但是在企業(yè)級應(yīng)用領(lǐng)域,企業(yè)客戶,我們擬基于Flex技術(shù)開發(fā)通用的前臺播放器,可以同事播放視頻FlashMideaServer和文件服務(wù)器,結(jié)合內(nèi)容管理、全文檢索和標(biāo)簽云技展示Flex電子商務(wù)公司應(yīng)用,通過Flex可以實現(xiàn)很lex作做的應(yīng)用要能像Excel一樣全鍵盤操作,除了支持Tab加Enter鍵之外,還需要能夠支持四是Excel一樣,當(dāng)單元格中的文字處于全選狀態(tài)的時候可以通過Flex由這些問題,本質(zhì)上來說Flex還是客戶端技術(shù),可xRIAFlex程序,所以一定會比普通的Web頁的客戶端資源,所以我不建議大家在構(gòu)建企業(yè)應(yīng)用時大量采用Flex技術(shù),相關(guān)內(nèi)容:InfoQ案例研究:納斯達(dá)克市場回放、使用Flex構(gòu)建以數(shù)據(jù)中心的企業(yè)應(yīng)用exSDKFlashBuilderAndrewShortentaServices作者RyanKnight譯者曹如進(jìn)。AdobeFlex開發(fā)與傳統(tǒng)的Web開發(fā)有很多不同之處。正確的理解和利用這些不同之處,可FlexWeb輕松——它提供的強大工具要遠(yuǎn)遠(yuǎn)超beFlashBuilder4beta(以前叫AdobeFlexBuilder)中提供了許多新的和改進(jìn)的工具,他們可以Flex開發(fā)中的關(guān)鍵要素之一是使用模塊和運行時共享庫(RuntimeSharedLibraries,RSLs),F(xiàn)lex開發(fā)中的一些關(guān)鍵要素:利用Flex的不同之處。了解為什么Flex開發(fā)與傳統(tǒng)Web開發(fā)有所不同,并利用那些不使用SpringBlazeDS集成項目簡化開發(fā)。使用SpringBlazeDS集成項目簡化Java服務(wù)器作,充分利用Flex和AdobeFlash的優(yōu)勢。測試.預(yù)先計劃測試。Flex發(fā)lex這套方法與傳統(tǒng)的超文本標(biāo)記語言(HypertextMarkupLanguage,HTML)編寫的應(yīng)用程序不FlexWeb維護(hù)。這超AdobeFlashPlayer是單線程的,因此任何需要長時間運行的調(diào)用都需要注冊一個回調(diào)函數(shù)。單線程對于圖形化用戶界面(GUI)開發(fā)來說是個線程竊取所有CPU周期,從而保持了GUI的響應(yīng)。單線程還使得開發(fā)更加簡單,因為你不需要處理多線程編程。(還記得在Swing中處理線程的噩夢嗎?)x了某個異步事件結(jié)束時發(fā)生的事件或者提醒而注冊的。(函數(shù)指針對于Java程xFlex好處在于,這么做可以優(yōu)化客戶端上下載和啟動的時間。應(yīng)用程序Flex個主要好處是,它可以讓開發(fā)過程更容易模塊化。它允許開發(fā)人員Flex發(fā)生。Flex用程序的一個挑戰(zhàn)之處在于,編譯過程所花的時間要比大部分程序員JavaFlex應(yīng)用程序可以花上好幾分鐘。想要中的Java存檔(JAR)文件。你可以使用SWC檔案來完成一些工作:主題。主題定義了應(yīng)用程序的觀感。它包含主題所需的資源(例如圖片文件和字體),SS資源包。這些都是本地化的屬性文件和AdobeActionScript類集。SWC文件:要么靜態(tài)地連接它們,這種情況下它們會編譯進(jìn)你的項目;要么把它們當(dāng)做運行時共享庫(RSL,RuntimeSharedLibrary)來使用。使用多被利用的優(yōu)勢。本質(zhì)上你是向Flex模塊管理器傳遞了想要加載模塊的dfunctiongetModuleFromServerurlStringonSuccessFunctionvoid{varmoduleIModuleInfo=ModuleManager.getModule(url);ventListenerModuleEventREADYloadModuleSuccessHandler}publicfunctionloadModuleSuccessHandlermoduleEventModuleEvent:void{varmoduleIModuleInfomoduleEvent.module;nitializingthemodule}Flex發(fā)戶端丟失了與主服務(wù)器的連接。這時客戶端可以繼續(xù)從另外一個URL中序輕松地開發(fā)和測試通過適當(dāng)?shù)丶せ頥iew棧(Stack),你可以用單個URL輕松地訪問應(yīng)用程序的任何點——這個固定的URL來訪問應(yīng)用程序的不同部分,這將大大減輕開發(fā)中的痛苦并且tes這些對象可以是一個包裝簡單的表格或是一個復(fù)雜組件的畫布(canvas)。使用視圖棧的好于你可以通過在代碼中設(shè)置當(dāng)前的子組件來輕松的操作它們。例如oaccoutInfo戶端架構(gòu):反模式則是不熟悉語言的程序員最會發(fā)生的常見錯誤。定義好Flex中Flex程序員常犯的錯誤,然后再展示一些Flex編MXML在根包中。這么做的好處不是很明顯,因為你可以將MXML文件放入到包中,并且通過它們的名字空間(由于實際的包的名字可能沒有在文件中指定)進(jìn)行引MXML根據(jù)其所在的目錄結(jié)構(gòu)來放入包當(dāng)中的。因此將MXML文件放入到xFlex發(fā)頁(HomeView.mxml,ProductsView.mxml,SupportView..mxml)都放入根包中。這個過程和把ProductsViewidpViewlabel="Products"catalog="{catalog}"部分顯示時,這些數(shù)據(jù)需要分開地傳遞給每一個組件。首先,這看起來似乎不是一個問題,戶端架構(gòu):推薦模式Flex前景的一種方法使用了一個像Swiz一序聲明了通用的模型和控制器:modelStoreModelidstoreModel"/>然后View類連接上控制器:reModeloreModelStoreModel任何視圖可以通過單個URL進(jìn)行訪問。除此之外,視圖棧的參數(shù)需用通過通用控制器能夠讓你在應(yīng)用程序中各個地方使用通用的URL和必要Flex發(fā)ewStore構(gòu)的一個示例,讓我們先看看怎樣將例toresrcflexMXMLCSS中。為此,你必須對flexstore.mxml做出如下改動:在<mx:Application>標(biāo)簽中加入xmlns:view="com.anvilflex.view.*"。將視圖變?yōu)槭褂?lt;view>標(biāo)簽(因此<HomeView>將變成<view:HomeView.../>)。importProduct母。接下去,按住Ctrl-空格鍵來使用自動完成功能,它同樣也可以為Product類加入正確的import語句。SpringBlazeDSJava碼開發(fā)。在最新發(fā)布的項目中,團(tuán)隊成員可以實現(xiàn)核心的配置文件,如web.xml以及Flex服務(wù)配置文件。接下去,的類中增添適當(dāng)?shù)臉?biāo)注來將它們作為服務(wù)展現(xiàn)給BlazeDSProduct展現(xiàn)為一個遠(yuǎn)程服務(wù):@@Service("productService")@RemotingDestination(channels={"my-amf"})publicclassProductDAO{@AutowiredblicProductDAO//...initializetheProductDaoclass}@RemotingIncludeFlex發(fā)uctfindProductNameintidductdatabasefindProductidname}}ProductDAO可以通過使用productService進(jìn)行調(diào)用。單個方法可以使用@RemotingInclude將其展現(xiàn)為遠(yuǎn)程方法。其實這些方法都會作團(tuán)隊一起工作要了解Flex中可以做什么,以及Flex怎exhop試Mercury的商業(yè)工具,或者像FlexMoneky一樣的Flex發(fā)SpringBlazeDSFlex的技術(shù)。開發(fā)人員相關(guān)內(nèi)容:從標(biāo)簽時代到富客戶端:從Web1.0到FlexyFlexJava程序員ActionScript3入門構(gòu)建Flex應(yīng)用的10大誤區(qū)作者RyanKnight譯者張龍aSJavaavaRIA。這樣我們就可以通過BlazeDS公開Spring管理的服務(wù)而無需額外的配置文件。其優(yōu)勢SpringBlazeDSIntegration展示一本文所用的示例應(yīng)用是個簡單的蘇打(soda)服務(wù),它提供了基本的賬戶信息。其所用的數(shù)比如說,下面的配置片段就將Soda服務(wù)聲明為一個Springbean:<!--<!--Implementationofsodabean-->beanidsodaBeanclasscom.gorillalogic.sodaBank.SodaService"hodinitSodaAccountspropertynamenumAccountsvalue1000"/>ebeDSIntegrationHTTP相同的JavaBean配置方式來配置該ssagerServletDispatcherServleteDSMessageBrokerSpringPation需的jar文件增加到程序庫目錄中??梢酝ㄟ^SpringSource站點下載,也可以使用示例項目webxmlBlazeDSMessageBrokerServlet刪掉,然后加上對SpringDispatcherServlet的引用:letservletnameSpringMVCDispatcherServlet</servlet-name>servletclassorgspringframeworkwebservletDispatcherServlet</servlet-class>paramramnamecontextConfigLocationparamnameparamvalueWEBINFconfigwebapplication-config.xml</param-value>itparameDSIntegrationloadonstartup/load-on-startup>vletvletmappingservletnameSpringMVCDispatcherServlet</servlet-name>ervletmappingonconfigxml標(biāo)準(zhǔn)的BlazeDS文件位于WEB-INF/flex中,其主文件為services-config.xml,其中定義了通道、日志及其他系統(tǒng)配置。該文件的一個變化就是標(biāo)準(zhǔn)AMF通道的URL變成通過DispatcherServlet來路由請求:channeldefinitionidmyamfclass="mx.messaging.channels.AMFChannel">endpointurlhttp{}:{server.port}/{context.root}/rillamessagebrokeramflassflexmessagingendpointsAMFEndpointweb-application-config.xml是主配置文件。事實上,一旦配置好了其他文件,那么在大多數(shù)情況下只需要修改該文件就行了。在web-application-config.xml文件中聲明了MessageBrokerHandlerAdapter,這樣就會將HTTP消息路由給Spring管理的MessageBroker。beanclassorgspringframeworkflex.messaging.servlet.MessageBrokerHandlerAdapter"/>DispatchServlet的所有請求:beanclassorgspringframeworkweb.servlet.handler.SimpleUrlHandlerMapping">pertynamemappings/*=mySpringManagedMessageBrokerueertybeanidmySpringManagedMessageBroker"class="orgspringframeworkflexmessagingMessageBrokerFactoryBean"/>xmlgorillamessagebrokereDSIntegration務(wù)。在該示例中,我們將SodaService聲明為sodaBean:beanidsodaBeanclasscom.gorillalogic.sodaBank.SodaService"hodinitSodaAccountspropertynamenumAccountsvalue1000"/>odaBeannidsodaServiceclassorgspringframeworkflexmessagingremotingFlexRemotingServiceExporter>propertynamemessageBrokerref="mySpringManagedMessageBroker"/>propertynameserviceref="sodaBean"/>eansodaBeannFlexRemoteObjects們聲mxRemoteObjectidremoteObject"onsodaServicetHandlereventfaultfaultHandlerevent;"nelSetsodaChannelsmxChannelSetidsodaChannelsmxAMFChannelurigorillamessagebrokeramf"/>hannelSetxJava該向哪個通道發(fā)起調(diào)用。其一是針對服務(wù)端配置文件services-config.xml來編譯客戶端,通集將通道配置在客戶端上。RemoteObject異,區(qū)別在于返回結(jié)果的過程是異步的?;鶆?wù)器端的調(diào)用形式如下:eDSIntegrationetSodaModelodaModeleventresultasSodaModel服務(wù)——服務(wù)器端on過程。該過程將SpringSecurity與BlazeDS安全過程集成起來了(注意,在本文撰寫之際,該處所使用的代碼僅僅存在于SVN上。同時我將示例所用代碼的快照放到了jar文件中)。我們通過一個單獨的配置文件(security-context.xml)來聲明系統(tǒng)中的用戶。需要將該文件DispatcherServlet展示了如何在web.xml文件中配置該文件:letservletnameSpringMVCDispatcherServlet</servlet-name>servletclassorgspringframeworkweb.servlet.DispatcherServlet</tclassparamramnamecontextConfigLocationparamnameparamvalueWEBINFconfigsecuritycontextxml/WEB-INF/config/web-application-config.xmlamvalueitparamloadonstartup/load-on-startup>vletsecuritycontextxml文件中聲明系統(tǒng)用戶:nticationprovidererviceusernameryanpassword="monkey"authoritiesROLEUSERROLEADMIN/>usernamealexpassword"chimp"authorities="ROLE_USER"/>rserviceenticationprovidereDSIntegrationker的通道與URL。S授權(quán)的調(diào)用傳遞給Spring管理的安全上下文。下面的代碼片段聲明了該bean的一個實例并引用了之前定義的安全上下文:nidloginCommandclassorgspringframeworkflexmessagingsecuritySpringSecurityLoginCommandconstructorargref_authenticationManager"/>ServletFilterpipeandfilterFilter都能阻止對lterSpringchanneldefinitionidmy-protected-amf"assmxmessagingchannelsAMFChannelendpointurlhttp{}:{server.port}/{context.root}/gorillaprotectedmessagebrokeramf"lassflexmessagingendpointsAMFEndpointanneldefinitionchanneldefinitionid"my-protected-by-id-amf"assmxmessagingchannelsAMFChannelendpointurlhttp{}:{server.port}/{context.root}/gorillaprotected/messagebroker/amf"lassflexmessagingendpointsAMFEndpointanneldefinitioneDSIntegration接下來我們定義一個端點源(endpointsource),它配置了需要保護(hù)的端點或通道以及訪問說,我們只定義一種用戶角色,然后配置一個需要保護(hù)的URL及端點:nidconfigAttributelassorgspringframeworksecurityConfigAttributeDefinitionconstructorargtypejavalangString"value="ROLE_USER"/>nidendpointSourceclassorgspringframeworkflexmessagingsecurityEndpointDefinitionSourcetructorargbeanclassorgspringframeworksecurityutil.AntUrlPathMatcher"/>nstructorargtructorargclassorgspringframeworksecurityinterceptwebRequestKey>constructorargvalue/protected/kerrefbeanconfigAttribute>rynstructorargtructorargvaluemyprotectedbyid-amf</value>refbeanconfigAttribute>rynstructorargURLmy-protected-amf(該通道監(jiān)聽/gorilla/protected/messagebroker/amf)與eDSIntegration接下來,我們定義端點攔截器與異常解析器以將所有配置連接在一起:beanidendpointInterceptor"classorgspringframeworkflexmessagingsecurityEndpointServiceMessagePointcutAdvisortructorargbeanclassorgspringframeworkflex.messaging.security.EndpointInterceptor">propertynameaccessDecisionManagerref"_accessManager"/>propertynameauthenticationManagerref="_authenticationManager"/>propertynameobjectDefinitionSourceref="endpointSource"/>nstructorargbeanid="exceptionTranslator"classorgspringframeworkflexmessagingsecurityEndpointServiceMessagePointcutAdvisor>tructorargclassorgspringframeworkflexmessagingsecuritySecurityExceptionTranslationAdvice"/>nstructorargSpringMessageBroker定義來應(yīng)用這些配置處理器:beanidmySpringManagedMessageBroker"ssorgspringframeworkflexmessagingMessageBrokerFactoryBeanpropertynameconfigProcessorsrefbeanloginCommand>refbeansecurityConfigProcessor/>erty<beanid="sodaService"classorgspringframeworkflexmessagingremotingFlexRemotingServiceExporter>propertynamemessageBrokerref="mySpringManagedMessageBroker"/>propertynameserviceref="sodaBean"/>propertynamechannelIdsvalue"my-protected-amf,dbyidamfeDSIntegrationsoda已經(jīng)定義好了其只能在安全的通道上進(jìn)行通信。這會阻止未認(rèn)證的用戶(并非來自于正確的角色)對該服務(wù)的訪問。服務(wù)——客戶端只需修改remoteobject定義使之包含一個安全的通道即可:mxRemoteObjectidremoteObject"onsodaServicetHandlereventfaultfaultHandlerevent;"nelSetsodaChannelsmxChannelSetidsodaChannelsmxAMFChanneluri/gorilla/protected/messagebroker/amf"/>hannelSet證,同時又調(diào)用了soda服務(wù)來獲取Soda模型,那么客戶端就會收到如下的錯誤消息:eivedfaultRPCFaultfaultStringAnAuthentica

溫馨提示

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

評論

0/150

提交評論