一種新型輕量級Web應(yīng)用框架研究_第1頁
一種新型輕量級Web應(yīng)用框架研究_第2頁
一種新型輕量級Web應(yīng)用框架研究_第3頁
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡介

1、一種新型輕量級Web應(yīng)用框架研究摘要:本文引入了輕量級Web開發(fā)框架Spring,分析其原理和實(shí)現(xiàn),剖析了核心機(jī)制IoC和AOP,并結(jié)合MVC模式設(shè)計(jì)思想,將它分為視圖層、控制層、業(yè)務(wù)邏輯層、數(shù)據(jù)持久層,并對每層的實(shí)現(xiàn)策略進(jìn)行研究與改進(jìn),給出以Spring框架為核心,整合可重用動(dòng)態(tài)數(shù)據(jù)管理構(gòu)件和Acegi安全框架的輕量級Web應(yīng)用框架的總體結(jié)構(gòu)設(shè)計(jì)。關(guān)鍵詞:輕量級Web應(yīng)用框架;Spring;控制反轉(zhuǎn)模式1. 引言J2EE框架標(biāo)準(zhǔn)將一個(gè)系統(tǒng)劃分為WEB和EJB兩個(gè)主要部分,從設(shè)計(jì)上可以抽象為表現(xiàn)層、業(yè)務(wù)層和持久層,實(shí)現(xiàn)了解耦的目的。因此,在實(shí)際編程中,大多數(shù)應(yīng)用從功能上根據(jù)這三個(gè)層次來劃分,但

2、要這樣做,沒有技術(shù)上約束限制是比較困難的,因此一般借助J2EE具體技術(shù)來實(shí)現(xiàn),可以使用EJB規(guī)范實(shí)現(xiàn)服務(wù)層和持久層,Web技術(shù)來實(shí)現(xiàn)表現(xiàn)層。J2EE應(yīng)用雖然從總體上劃分了三個(gè)層次,但在針對每一層上的具體應(yīng)用,要設(shè)計(jì)出可維護(hù)性、高拓展性的軟件設(shè)計(jì)目標(biāo)還是有一定的難度。因此,類似Spring的輕量級框架應(yīng)運(yùn)而生,其目的是許多的應(yīng)用不需要分布式、不需要J2EE中那些重量級的技術(shù),譬如JNDI,有必要將大多數(shù)應(yīng)用中不必要的技術(shù)隔離、改造。輕量級框架的發(fā)展已經(jīng)成為推動(dòng)J2EE技術(shù)發(fā)展的重要推動(dòng)力,已經(jīng)成為一代J2EE技術(shù)構(gòu)架的基礎(chǔ),為此本文對一種新型輕量級Web應(yīng)用框架進(jìn)行相關(guān)研究。2. Web應(yīng)用框架

3、相關(guān)研究2.1. 基本概念框架是一種軟件重用技術(shù),是一個(gè)應(yīng)用軟件系統(tǒng)部分或整體可重用設(shè)計(jì),規(guī)定了其應(yīng)用體系結(jié)構(gòu),闡明了整個(gè)設(shè)計(jì)、協(xié)作構(gòu)件之間依賴關(guān)系,責(zé)任分配以及控制流程,具體表現(xiàn)為一組抽象類以及與它們的實(shí)例之間的協(xié)作方法。采用基于框架的開發(fā),開發(fā)者只需要做的是向事先架好的骨架中填入特定的代碼,可以使整個(gè)系統(tǒng)結(jié)構(gòu)的改善和流程的固定化,提高了整個(gè)系統(tǒng)的可重用性和易修改性。J2EE是一種利用Java2平臺技術(shù)簡化企業(yè)解決方案的開發(fā)、部署以及管理一些復(fù)雜問題的結(jié)構(gòu)體系。J2EE定義了豐富的技術(shù)標(biāo)準(zhǔn),符合標(biāo)準(zhǔn)的開發(fā)工具和API為開發(fā)企業(yè)級應(yīng)用提供重要支持。J2EE與別的多層體系平臺比較,其核心技術(shù)及優(yōu)

4、勢表現(xiàn)在:組件技術(shù)、Servlet和JSP、JDBCAPI、JNDI和EJB等方面。2.2. 輕量級Web框架輕量級框架主要是指在Java應(yīng)用程序開發(fā)環(huán)境中,簡化的編程模型和更具響應(yīng)能力的容器,旨在消除與傳統(tǒng)J2EEAPI有關(guān)的不必要的復(fù)雜性和限制,縮短應(yīng)用程序的部署時(shí)間,從而提高開發(fā)效率。比較流行或即將興起的輕量級Web框架主要有:Struts框架、Tapestry框架、JATO框架以及Spring框架。本文是基于Spring框架展開的,在此做詳細(xì)描述:Spring首先是一個(gè)開源項(xiàng)目,并且非常活躍;是一個(gè)基于反向控制(IoC)和面向方面編程(AOP)的多層J2EE系統(tǒng)框架,但它不強(qiáng)迫開發(fā)者必

5、須在每一層中必須使用Spring,因?yàn)槠淠K化做的很好,允許開發(fā)者根據(jù)自己的需要選擇使用它的某一個(gè)模塊;Spring實(shí)現(xiàn)了很優(yōu)雅的MVC,對不同的數(shù)據(jù)訪問技術(shù)提供了統(tǒng)一的接口,它采用的IoC可以很容易的實(shí)現(xiàn)Bean的裝配,它提供了簡潔的AOP并據(jù)此實(shí)現(xiàn)事務(wù)管理等特性。3. 新型輕量級Web應(yīng)用框架根據(jù)Web應(yīng)用多層開發(fā)原則,把基于Spring框架的新型Web應(yīng)用分為視圖層、控制層、業(yè)務(wù)邏輯層、數(shù)據(jù)持久層,本節(jié)分別對這四層進(jìn)行分析研究,并分析了Acegi安全框架的工作原理和實(shí)現(xiàn)機(jī)制以及設(shè)計(jì)實(shí)現(xiàn)了一種可重用動(dòng)態(tài)數(shù)據(jù)管理構(gòu)件,最后給出了以Spring框架為核心,整合可重用動(dòng)態(tài)數(shù)據(jù)管理構(gòu)件和Acegi

6、安全框架的輕量級Web應(yīng)用框架的總體結(jié)構(gòu)設(shè)計(jì)。3.1. 層次分析3.1.1. 視圖層視圖層位于整個(gè)Web應(yīng)用層次結(jié)構(gòu)的最頂端,負(fù)責(zé)處理用戶交互,并從業(yè)務(wù)服務(wù)層獲取相關(guān)數(shù)據(jù)以顯示給用戶。現(xiàn)在主流的MVC設(shè)計(jì)模式思想,視圖層主要采用JSP實(shí)現(xiàn),進(jìn)行數(shù)據(jù)展現(xiàn)和處理,一般存在如下問題:無法像C/S那樣使用豐富的效果來展示數(shù)據(jù),不具有展觀性;Web應(yīng)用程序的執(zhí)行效率,產(chǎn)生了不必要的等待;客戶端通過提交窗體或者采用地址欄傳遞參數(shù)的形式發(fā)送參數(shù)時(shí),不管哪種形式,都將導(dǎo)致頁面被重新加載。Ajax技術(shù)的出現(xiàn),很好的解決了上述問題。Ajax是一種位于客戶端的技術(shù),能將客戶端由原來的“啞”終端加強(qiáng)成智能化的“富客戶

7、端”,它采用異步發(fā)送請求的方式代替采用窗體提交實(shí)現(xiàn)無刷新更新網(wǎng)頁,該技術(shù)的應(yīng)用大大降低了客戶端延遲,提高Web應(yīng)用程序執(zhí)行效率,解決了瀏覽器等待數(shù)據(jù)傳輸問題,改善了用戶體驗(yàn),使用戶可以快速得到Web服務(wù)器的數(shù)據(jù)。Ajax實(shí)質(zhì)上也是遵循Request/Server模式,所以這個(gè)框架基本的流程也是:對象初始化發(fā)送請求服務(wù)器接收服務(wù)器返回客戶端接收修改客戶端頁面內(nèi)容。只不過這個(gè)過程是異步的。利用Ajax實(shí)現(xiàn)的MVC模型如圖1所示:3.1.2. 業(yè)務(wù)邏輯層業(yè)務(wù)邏輯層的職責(zé)是:處理應(yīng)用中的業(yè)務(wù)邏輯和業(yè)務(wù)有效性驗(yàn)證邏輯;管理事務(wù);管理業(yè)務(wù)對象之間的依賴關(guān)系;在持久層上構(gòu)造出業(yè)務(wù)邏輯的上下文,提供業(yè)務(wù)邏輯服

8、務(wù);管理基于持久層的業(yè)務(wù)邏輯實(shí)現(xiàn)。一般的業(yè)務(wù)邏輯層設(shè)計(jì)方案只是為了適應(yīng)系統(tǒng)的四層架構(gòu)而建立的平鋪式的結(jié)構(gòu),存在著兩個(gè)缺點(diǎn):首先對于同一個(gè)主題對象來說,X1和X2對象模型應(yīng)該有一些共性;七次在理論上,XXService是業(yè)務(wù)邏輯,對整個(gè)系統(tǒng)來說是重要的戰(zhàn)略性決定,有著一定的必然性;而DAO是具體層次的實(shí)現(xiàn),帶有相當(dāng)大的偶然性選擇。當(dāng)使用上面的設(shè)計(jì)方法,直接生成具體對象就使得偶然決定了必然。這種依賴是不可忍受的,業(yè)務(wù)由具體的實(shí)現(xiàn)來決定,這違反了設(shè)計(jì)模式中的“開一閉”原則(OCP)。所謂的“開一閉”原則,即是指:“一個(gè)軟件實(shí)體應(yīng)當(dāng)對擴(kuò)展開放,對修改關(guān)閉,也就是說,我們在設(shè)計(jì)一個(gè)模塊的時(shí)候,應(yīng)當(dāng)使這個(gè)

9、模塊可以在不被修改的前提下被擴(kuò)展。”相對于系統(tǒng)來說,業(yè)務(wù)層XXService的設(shè)計(jì)應(yīng)該是可擴(kuò)展的,即:當(dāng)添加一個(gè)編碼表的DAO實(shí)體時(shí)其代碼應(yīng)該保持不變。為實(shí)現(xiàn)XXService層的“開一閉”,必須進(jìn)行相應(yīng)的抽象,使得業(yè)務(wù)邏輯依賴于抽象層,如圖2所示。3.1.3. 數(shù)據(jù)持久層在企業(yè)級應(yīng)用開發(fā)中,持久層連接著數(shù)據(jù)資源層和業(yè)務(wù)邏輯層,起著承上啟下的作用。Spring框架本身而言,是一個(gè)很有特色的Web應(yīng)用框架,不僅如此它還提供了對持久層和視圖層的實(shí)現(xiàn)的封裝。對持久層來說,它為業(yè)務(wù)邏輯層提供數(shù)據(jù),所有對數(shù)據(jù)庫的操作都被屏蔽在持久層。Spring在持久層對JDBC進(jìn)行了良好的封裝,通過提供相應(yīng)的模板和輔

10、助類,在相當(dāng)程度上降低了JDBC操作的復(fù)雜性。并且得益于Spring良好的隔離設(shè)計(jì),JDBC封裝類庫可以脫離Spring Context獨(dú)立使用,也就是說,即使系統(tǒng)并沒有采用Spring作為結(jié)構(gòu)性框架,開發(fā)者也可以單獨(dú)使用Spring的JDBC部分(spring-dao.jar)來簡化訪問數(shù)據(jù)庫的工作。3.2. 動(dòng)態(tài)數(shù)據(jù)管理構(gòu)件本文動(dòng)態(tài)數(shù)據(jù)管理構(gòu)件的設(shè)計(jì)主要包括了兩個(gè)方面:數(shù)據(jù)字典和動(dòng)態(tài)數(shù)據(jù)對象。數(shù)據(jù)字典實(shí)現(xiàn)與數(shù)據(jù)庫中各表名以及對應(yīng)字段名的映射關(guān)系。數(shù)據(jù)字典記錄了數(shù)據(jù)庫中各表的結(jié)構(gòu)信息,它由存放表名的表和存放各表字段信息的表構(gòu)成。建立好數(shù)據(jù)字典后,也可以用它來創(chuàng)建一張物理表。本構(gòu)件采用的這種方

11、式簡化了通過頁面的參數(shù)傳遞來取值的代碼,簡化了對數(shù)據(jù)庫的操作代碼,避免了大量SQL語句在代碼中的重復(fù)出現(xiàn),從而降低了開發(fā)人員的負(fù)擔(dān),減小了出錯(cuò)機(jī)會(huì)。動(dòng)態(tài)數(shù)據(jù)對象的應(yīng)用是建立在數(shù)據(jù)字典基礎(chǔ)之上的。數(shù)據(jù)字典是動(dòng)態(tài)數(shù)據(jù)對象能夠使用的必要條件,是可重用動(dòng)態(tài)數(shù)據(jù)管理構(gòu)件的基礎(chǔ)。一般認(rèn)為,數(shù)據(jù)字典是以數(shù)據(jù)庫中數(shù)據(jù)基本單元為單位,按一定順序排列,對其內(nèi)容作詳細(xì)說明的數(shù)據(jù)集。本構(gòu)件的數(shù)據(jù)字典是對整個(gè)系統(tǒng)中所有數(shù)據(jù)庫表信息的集中管理。主要包括以下兩個(gè)部分:數(shù)據(jù)字典表管理;數(shù)據(jù)字典字段索引表管理。實(shí)現(xiàn)了數(shù)據(jù)字典后,就能根據(jù)數(shù)據(jù)字典所存儲(chǔ)的信息封裝一個(gè)完整的動(dòng)態(tài)數(shù)據(jù)對象。一般地,動(dòng)態(tài)數(shù)據(jù)對象通過綁定一張數(shù)據(jù)庫表,實(shí)

12、現(xiàn)對數(shù)據(jù)庫的操作。它可以將頁面?zhèn)魅氲闹涤幸?guī)律地存放在動(dòng)態(tài)數(shù)據(jù)對象中,從而方便將所需要的值一一對應(yīng)地注入到數(shù)據(jù)庫中。同樣地,也可以將數(shù)據(jù)庫中取出的信息有規(guī)律地封裝成動(dòng)態(tài)數(shù)據(jù)對象,從而方便將取出的值顯示到頁面上。數(shù)據(jù)對象的封裝,使得傳值的工作大大簡化,簡化了數(shù)據(jù)庫的操作。3.3. Acegi安全框架Spring框架本身沒有提供對系統(tǒng)的安全性支持。Acegi是一個(gè)能夠?yàn)榛赟pring的應(yīng)用系統(tǒng)提供描述性安全保護(hù)的安全框架。它提供了一組可以在Spring應(yīng)用上下文中配置的Bean,充分利用了Spring對IOC和AOP的支持。Acegi安全框架主要有4個(gè)主要組件來實(shí)施安全性。它們分別是:安全攔截器、

13、認(rèn)證管理器、訪問決策管理器、運(yùn)行身份管理器,它們之間的關(guān)系如圖3所示。在Acegi框架中支持多種安全信息的持久化方式,可以在配置文件中配置或存放在關(guān)系數(shù)據(jù)庫,由于在實(shí)際應(yīng)用中,需求是經(jīng)常發(fā)生變化的(例如在運(yùn)行期間用戶可能會(huì)提出動(dòng)態(tài)改變權(quán)限分配的需求)。所以,在配置文件中配置是滿足不了實(shí)際應(yīng)用需求的。3.4. 新型架構(gòu)設(shè)計(jì)本文提出的新型輕量級Web應(yīng)用框架從上到下依次為視圖層、控制器層、業(yè)務(wù)邏輯層、數(shù)據(jù)持久層,如圖4所示:圖 4新型輕量級Web應(yīng)用框架視圖層通過JSP結(jié)合Ajax技術(shù)實(shí)現(xiàn),能將客戶端由原來的“啞”終端加強(qiáng)成智能化的“富客戶端”,Ajax技術(shù)采用異步發(fā)送請求的方式實(shí)現(xiàn)無刷新更新網(wǎng)頁

14、。控制層通過Spring提供的靈活的控制器來完成。業(yè)務(wù)邏輯層由Java Bean或者EJB組件構(gòu)成。數(shù)據(jù)持久層是使用JDBC實(shí)現(xiàn)的,JDBC是Java核心類庫的一部分,是一個(gè)面向?qū)ο蟮膽?yīng)用程序接口,通過它可訪問各類關(guān)系數(shù)據(jù)庫。4. 結(jié)束語本文利用Spring框架將可重用動(dòng)態(tài)數(shù)據(jù)管理構(gòu)件和Acegi安全框架整合進(jìn)來,結(jié)合Ajax技術(shù)構(gòu)成了一個(gè)輕量級Web應(yīng)用框架。在此輕量級應(yīng)用框架的基礎(chǔ)上,應(yīng)用系統(tǒng)分為視圖層、控制層、業(yè)務(wù)邏輯層、數(shù)據(jù)持久層。Spring IoC編程模式降低了多層開發(fā)中層次之間的耦合度,Spring AOP編程方式實(shí)現(xiàn)了事務(wù)處理,Acegi安全框架實(shí)現(xiàn)了系統(tǒng)安全控制,可重用動(dòng)態(tài)數(shù)據(jù)管理構(gòu)件

溫馨提示

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

最新文檔

評論

0/150

提交評論