一個(gè)用于J2EE應(yīng)用程序的Backbase Ajax前端![]() 動(dòng)態(tài)HTML技術(shù)已經(jīng)出現(xiàn)了多年。最近,Google的最新Web應(yīng)用程序GMail、Google Suggests和Google Maps,在前端頁(yè)面中重新引入了基于標(biāo)準(zhǔn)的DHTML開發(fā)模型。Google證明了,DHTML開發(fā)模型能夠讓開發(fā)人員創(chuàng)建具有可視化吸引力和高度交互式的Rich Internet Application(豐富網(wǎng)絡(luò)應(yīng)用程序,RIA)。 Adaptive Path公司的Jesse James Garrett為這個(gè)基于標(biāo)準(zhǔn)的RIA開發(fā)模型創(chuàng)造了術(shù)語(yǔ)Ajax (Asynchronous JavaScript + XML)。與傳統(tǒng)的基于頁(yè)面的Web應(yīng)用程序模型相比,Ajax有3點(diǎn)不同之處:
換言之,Ajax解決方案包括一個(gè)客戶端引擎,它用于呈現(xiàn)用戶界面,并使用XML格式與服務(wù)器通信。這個(gè)引擎由很多JavaScript函數(shù)組成,位于Web瀏覽器中,它不需要插件,也不需要用戶安裝。 基于Ajax的RIA正在迅速成為Web應(yīng)用程序前端的基準(zhǔn),因?yàn)樗梢酝瑫r(shí)提供二者的優(yōu)點(diǎn):豐富性和可達(dá)性。Ajax應(yīng)用程序和桌面應(yīng)用程序一樣豐富,響應(yīng)高度靈敏,并且可以在一個(gè)頁(yè)面上提供所有數(shù)據(jù),無(wú)需刷新頁(yè)面。它們還擁有基于標(biāo)準(zhǔn)的瀏覽器應(yīng)用程序的可達(dá)性特點(diǎn),這類應(yīng)用程序可以在不具備瀏覽器插件或客戶端applet的情況下進(jìn)行部署。 Backbase所提供的Ajax軟件具有以下特點(diǎn):基于標(biāo)準(zhǔn)、功能全面且易于使用。Backbase Presentation Client (BPC)基于Ajax技術(shù),它使用稱為Backbase XML (BXML)的附加標(biāo)簽擴(kuò)展了DHTML。Backbase XML Server Edition for J2EE (BXS)包含了一些服務(wù)器端的組件,利用這些組件,J2EE開發(fā)人員可以快速開發(fā)J2EE應(yīng)用程序的Ajax前端。 在本文中,我使用Backbase為Java Pet Store開發(fā)了一個(gè)基于Ajax的前端。該案例分析說(shuō)明了如何使用Backbase技術(shù)作為J2EE應(yīng)用程序的Ajax表示層。您可以查看文中所描述的應(yīng)用程序的在線演示,網(wǎng)址是http://www./xmlserver。 Backbase Ajax表示層 Web開發(fā)人員應(yīng)該能夠輕松創(chuàng)建具有以下特點(diǎn)的Rich Internet Application (RIA):完全基于HTML標(biāo)準(zhǔn)(W3C),不需要最終用戶安裝插件,速度超快,能夠在所有瀏覽器上進(jìn)行操作,并與J2EE運(yùn)行時(shí)和開發(fā)環(huán)境完全集成。RIA利用客戶端(Web瀏覽器)資源創(chuàng)建和管理用戶界面,從而為最終用戶提供一個(gè)響應(yīng)靈敏而且具有應(yīng)用程序風(fēng)格的用戶界面。 這種方法最近被稱為Ajax。Ajax這個(gè)術(shù)語(yǔ)的靈感來(lái)源于Gmail、Google Maps和Google Suggests這類應(yīng)用程序,它把現(xiàn)有的瀏覽器技術(shù)提高到了一個(gè)新的水平上。RIA從根本上改進(jìn)了在線應(yīng)用程序的可用性和有效性。Ajax RIA只使用標(biāo)準(zhǔn)的瀏覽器技術(shù)(如JavaScript、XHTML和XMLHttpRequest對(duì)象)就做到了這一點(diǎn)。通過(guò)使用XMLHttpRequest,在將數(shù)據(jù)異步加載到界面中時(shí)就無(wú)需刷新頁(yè)面。 Backbase在J2EE架構(gòu)中提供一個(gè)Ajax表示層,它結(jié)合了目前的J2EE服務(wù)器和先進(jìn)的富客戶端技術(shù)的優(yōu)點(diǎn)。Backbase表示層控制了富用戶界面的每個(gè)方面:與最終用戶的交互模型,與后端系統(tǒng)的集成,以及整個(gè)客戶端-服務(wù)器通信。Backbase直接提供了用于聚合來(lái)自任意位置的XML的下一個(gè)范型,將數(shù)據(jù)綁定到先進(jìn)的富用戶界面控件,并在一個(gè)統(tǒng)一的富用戶界面中交付組合應(yīng)用程序。 Backbase表示層由一個(gè)客戶機(jī)和一個(gè)服務(wù)器組成。Backbase Presentation Client (BPC)是一個(gè)基于Ajax的GUI引擎,它允許開發(fā)人員以聲明性的方式快速構(gòu)建RIA。Backbase XML(BXML)是對(duì)XHTML的擴(kuò)展。它為開發(fā)人員提供了交付富前端功能的附加標(biāo)簽(B tag)。Backbase XML Server (BXS)提供一種XML流水線架構(gòu),利用它可以從Web服務(wù)、數(shù)據(jù)庫(kù)或Java對(duì)象獲取數(shù)據(jù),可以聚合和轉(zhuǎn)換這些數(shù)據(jù),并將其綁定到BPC中的UI元素。BPC和BXS相結(jié)合,可以在Web瀏覽器和應(yīng)用服務(wù)器之間搭建一座功能強(qiáng)大的橋梁,并提供一個(gè)分布在客戶端和服務(wù)器上的完整的富Internet表示層。 圖1說(shuō)明了在邏輯和物理應(yīng)用程序架構(gòu)中,Backbase所處的位置。應(yīng)用程序由一個(gè)J2EE后端和一個(gè)基于Ajax的RIA前端組成。從邏輯上說(shuō),Backbase提供了表示層,而J2EE提供了業(yè)務(wù)邏輯和數(shù)據(jù)層。從物理上說(shuō),表示層分布在客戶端和服務(wù)器上。在客戶端上,Backbase使用BPC擴(kuò)展了瀏覽器。在服務(wù)器上,Backbase使用BXS擴(kuò)展了應(yīng)用服務(wù)器。
圖1. Backbase富Internet表示層 Pet Store案例分析 我們將使用Java Pet Store作為案例來(lái)分析如何為J2EE應(yīng)用程序添加Backbase RIA前端。Java Pet Store Demo是Sun Microsystems提供的一個(gè)示例應(yīng)用程序,其目的是為了演示如何使用Java 2 Platform, Enterprise Edition(J2EE)構(gòu)建Web應(yīng)用程序(詳情請(qǐng)參見(jiàn)http://java./developer/releases/petstore)。 Java Pet Store是業(yè)內(nèi)一個(gè)著名的參考應(yīng)用程序(pet store還有.NET和Flash版本)。由于以下兩個(gè)原因,它成為為J2EE應(yīng)用程序添加基于Ajax的RIA前端的完美案例:
RIA Pet Store前端 在這一節(jié)中,我將討論經(jīng)過(guò)改進(jìn)的新Pet Store RIA前端。 下面的兩個(gè)屏幕快照演示了前端的改進(jìn)。要獲得對(duì)Backbase RIA前端更直觀的感受,請(qǐng)?jiān)L問(wèn)http://www./xmlserver上的在線演示,或者到http://www./download下載Backbase社區(qū)版本。 下面兩個(gè)圖對(duì)兩個(gè)前端進(jìn)行了可視化的比較。圖2顯示的是原來(lái)靜態(tài)的多頁(yè)面HTML前端。圖3顯示的是新的Backbase SPI前端:
圖2. 原始HTML前端
圖3. 新Backbase前端 Backbase為創(chuàng)建豐富的單頁(yè)面Web界面提供了許多可能性。下面列出了一些Pet Store所使用的例子。
為了執(zhí)行購(gòu)買,購(gòu)買者必須在一份表單中填入個(gè)人詳細(xì)信息。Backbase極大地簡(jiǎn)化了這個(gè)購(gòu)買過(guò)程,通過(guò)客戶端的信息欄驗(yàn)證提供即時(shí)的反饋,并在提供所有數(shù)據(jù)的過(guò)程中提供逐步的指南和概述。 圖5顯示了在填寫表單的第一個(gè)步驟中,對(duì)于e-mail地址信息欄的驗(yàn)證。當(dāng)購(gòu)買者填寫下一欄時(shí),就會(huì)提供即時(shí)的反饋。
圖5. 信息欄驗(yàn)證—e-mail欄 Backbase RIA Pet Store的架構(gòu) 增強(qiáng)Pet Store(或其他任何Web應(yīng)用程序)的前端時(shí),我們將繼續(xù)依賴于以下兩條架構(gòu)基本原則:
現(xiàn)有的后端在開發(fā)期間是完全孤立的,而且不會(huì)改變,這個(gè)事實(shí)對(duì)于架構(gòu)師和IT管理人員十分有利。通過(guò)一個(gè)規(guī)整的、模塊化的架構(gòu),他們將能夠控制風(fēng)險(xiǎn)和成本,同時(shí)顯著提高Web應(yīng)用程序的用戶友好性。 Backbase的富表示層技術(shù)由兩個(gè)模塊組成,它們將被加入到架構(gòu)中。在客戶端,BPC管理著SPI,并通過(guò)異步響應(yīng)事件來(lái)處理與最終用戶之間的交互。在服務(wù)器端,Backbase XML Server這個(gè)靈活的XML管道可以連接到任意服務(wù)器端的數(shù)據(jù)源,包括Web服務(wù)、文件、數(shù)據(jù)庫(kù)或本地Java對(duì)象。圖6說(shuō)明了BPC和BXS如何共同為RIA提供一個(gè)聲明式的、基于XML的端到端表示層。
圖6. 聲明式的端到端表示層 Backbase表示客戶端 BPC是一個(gè)基于Ajax的GUI引擎,它運(yùn)行在標(biāo)準(zhǔn)的Web瀏覽器中。運(yùn)行時(shí),BPC被加載到瀏覽器中,然后它會(huì)接收BXML代碼,構(gòu)造對(duì)應(yīng)的B樹,并不斷地把這種表示轉(zhuǎn)換為瀏覽器所呈現(xiàn)的DOM樹。圖7說(shuō)明了運(yùn)行時(shí)轉(zhuǎn)換過(guò)程。
圖7. BPC運(yùn)行時(shí) Backbase XML Backbase XML (BXML)是XHTML的擴(kuò)展。開發(fā)人員通過(guò)創(chuàng)建BXML應(yīng)用程序來(lái)開發(fā)富前端,包括BXML標(biāo)簽、標(biāo)準(zhǔn)的XHTML和CSS。BXML是一種聲明性語(yǔ)言,它包含了XHTML中所沒(méi)有的標(biāo)簽(B標(biāo)簽) BXML包含用于下列用途的標(biāo)簽:
用于J2EE的Backbase XML Server Backbase XML Server (BXS)是一個(gè)服務(wù)器端的引擎,用于把BPC鏈接到任意J2EE后端。和BPC一樣,BXS是完全基于XML的,其編程是聲明性的。它使用一種XML管道架構(gòu),提供功能強(qiáng)大的服務(wù)器端轉(zhuǎn)換和聚合。 BXS附帶一些用于訪問(wèn)最常用的數(shù)據(jù)源(包括Web服務(wù)、數(shù)據(jù)庫(kù)、文件系統(tǒng)和本地Java對(duì)象)的開箱即用任務(wù)。我們使用Backbase標(biāo)簽對(duì)從這些源獲得的數(shù)據(jù)進(jìn)行聚合,然后使用XSLT進(jìn)行轉(zhuǎn)換。結(jié)果以無(wú)格式XML數(shù)據(jù)或BXML表示代碼的形式返回給BPC。 BXS還提供一些應(yīng)用服務(wù),包括身份驗(yàn)證、授權(quán)、日志記錄和用戶跟蹤。圖8顯示了BXS的總體架構(gòu)。
圖8. BXS架構(gòu) Eclipse開發(fā)工具 為了讓J2EE開發(fā)人員可以只使用一種開發(fā)工具就能創(chuàng)建完整的Web應(yīng)用程序,包括富前端,Backbase提供了一個(gè)Eclipse插件。如圖9所示,該插件提供了在Eclipse中突出顯示語(yǔ)法和Backbase標(biāo)簽代碼自動(dòng)完成的功能。
圖9. Backbase Eclipse插件 注意:Eclipse的可視化拖放開發(fā)插件還處在開發(fā)階段。 部署到BEA WebLogic BXS是一個(gè)與標(biāo)準(zhǔn)兼容的J2EE應(yīng)用程序,可以將其部署到任何J2EE應(yīng)用服務(wù)器上。圖10顯示了如何使用WebLogic控制臺(tái)把BXS部署到BEA WebLogic Server。
圖10. 把BXS部署到BEA WebLogic 實(shí)現(xiàn)Backbase RIA Pet Store 下面的順序圖包括更多詳細(xì)信息,可以幫助您更好地理解如何實(shí)現(xiàn)Backbase pet store。該順序圖顯示了在應(yīng)用程序的初始化加載期間BPC與BXS之間的交互,如圖11所示,它包括以下4個(gè)步驟:
用戶交互:用戶點(diǎn)擊Next按鈕便可顯示編號(hào)從9到16的狗圖片。
圖11.順序圖:富商店前端
為了詳細(xì)說(shuō)明Backbase Ajax寵物商店的實(shí)現(xiàn),我把重點(diǎn)放在了初始化的步驟上。完整的寵物商店(可以從http://www./xmlserver下載)還包括以下功能:
結(jié)束語(yǔ) 最近有很多人都在研究Ajax。Ajax的優(yōu)點(diǎn)已經(jīng)在實(shí)踐中得到了證明。定制Ajax的缺點(diǎn)在于它的復(fù)雜性和不兼容性。大量客戶端JavaScript的出現(xiàn)意味著開發(fā)人員很可能陷入到瀏覽器實(shí)現(xiàn)差別的泥潭中去。另外,JavaScript這種語(yǔ)言不適用于復(fù)雜的應(yīng)用程序。 為了開發(fā)易于管理的、可伸縮的和適應(yīng)未來(lái)變化的Ajax解決方案,開發(fā)人員所需使用的工具應(yīng)該具有比定制部件開發(fā)更多的功能。Backbase Ajax軟件提供了一個(gè)功能全面的客戶端GUI管理引擎(Backbase Presentation Client)、一個(gè)靈活的服務(wù)器端XML管道(Backbase XML Server)和一種聲明性的基于標(biāo)簽的UI語(yǔ)言,BXML(Backbase eXtensible Markup Language)。該方法具有幾個(gè)優(yōu)點(diǎn)。 首先,Backbae易于使用。它的聲明性語(yǔ)言水平地?cái)U(kuò)展了DHTML;它完全對(duì)開發(fā)人員隱藏了瀏覽器兼容性的問(wèn)題;而且它帶有一套開發(fā)和調(diào)試工具。 其次,Backbase是一個(gè)功能全面的Ajax GUI管理系統(tǒng)。Backbase的先進(jìn)性大大超過(guò)了其他Ajax框架,它完全把重點(diǎn)放在提供一個(gè)部件庫(kù)或客戶端-服務(wù)器通信(如DWR)上。在控件和客戶端-服務(wù)器通信的基礎(chǔ)上,Backbase提供了用于如下用途的標(biāo)簽:提供電影效果,隨需應(yīng)變的數(shù)據(jù)加載,數(shù)據(jù)綁定和客戶端的數(shù)據(jù)轉(zhuǎn)換,對(duì)于Back和Forward按鈕的支持,完善的GUI狀態(tài)管理,等等。所有這些功能對(duì)于目前的Ajax Web應(yīng)用程序來(lái)說(shuō)都是必需的。 最后,Backbase是以兼容的方式提供所有客戶端和服務(wù)器端的功能。用戶可以使用富Ajax前端擴(kuò)展現(xiàn)有的應(yīng)用程序,同時(shí)無(wú)需修改后端。對(duì)于整個(gè)表示層來(lái)說(shuō),它的架構(gòu)是時(shí)新的、模塊化的,而且它基于XML。 參考資料
原文出處 A Backbase Ajax Front-end for J2EE Applications http://dev2dev./pub/a/2005/08/backbase_ajax.html ![]()
|
|
來(lái)自: 昵稱11904 > 《學(xué)術(shù)》