基于Decorator AOP框架的一卡通管理系統(tǒng)
文章出處:http://m.mjagi.com 作者: 人氣: 發(fā)表時間:2011年09月16日
摘 要:傳統(tǒng)MVC模式下橫切關(guān)注點(diǎn)問題是一個關(guān)系系統(tǒng)性能優(yōu)化的問題。論文分析了MVC模式的性能目標(biāo),建立了基于裝飾器設(shè)計模式(Decorator Pattern)精簡AOP框架的理論模型,實(shí)現(xiàn)了權(quán)限管理等橫切關(guān)注點(diǎn)織入方案,并基于實(shí)際應(yīng)用進(jìn)行了系統(tǒng)架構(gòu)模式優(yōu)化,在系統(tǒng)功能與業(yè)務(wù)功能分離方面得到有效解決,AOP多重攔截方案得到有效建立。實(shí)驗(yàn)與實(shí)際運(yùn)行系統(tǒng)表明,Decorator AOP框架在實(shí)際應(yīng)用中降低了系統(tǒng)復(fù)雜性、提高了組件重用性并優(yōu)化了業(yè)務(wù)流程,具有良好的實(shí)用性。
1 引言
在現(xiàn)代軟件開發(fā)領(lǐng)域,基于OOP的MVC模式為應(yīng)用系統(tǒng)的開發(fā)環(huán)境提供了一種分層的體系結(jié)構(gòu),即模型層、視圖層和控制層,有效解決了系統(tǒng)復(fù)雜性與維護(hù)性的困難。但是由于面向?qū)ο蠹夹g(shù)在解決跨越多個模塊的橫切關(guān)注點(diǎn)問題上固有的缺陷,使得采用面向?qū)ο蠹夹g(shù)的開發(fā)模式,在處理橫切關(guān)注點(diǎn)問題時具有較大的局限性。
隨著科學(xué)技術(shù)的迅速發(fā)展及企業(yè)競爭越來越激烈,一卡通管理系統(tǒng)的應(yīng)用也越來越廣泛,用戶對系統(tǒng)要求也越來越高,企業(yè)需要不斷應(yīng)付用戶即時需求變化,雖然當(dāng)前MVC模式為此提供了較好的解決方案,但是在日志管理、權(quán)限管理、異常處理等橫切方面的可擴(kuò)展性還不能滿足用戶需求,系統(tǒng)低耦合性還沒有得到完全解決,文獻(xiàn) [1]提出的AOP編程技術(shù)正是為處理橫切關(guān)注點(diǎn)而出現(xiàn)的。
但是文獻(xiàn)[2-3]指出,AOP是一種新興編程方法,目前還處在研究和發(fā)展階段,它需要特殊的語言處理,AOP在Java環(huán)境下已經(jīng)擁了較為成熟的框架如 AspectJ等,但是在 .Net Framework環(huán)境中還沒公認(rèn)的最佳解決方案。作者在實(shí)際項(xiàng)目開發(fā)過程中通過對日志處理、權(quán)限管理模塊以及 AOP技術(shù)研究分析后,基于對 Struts[2]框架的思考,在.NET Framework環(huán)境下設(shè)計出一種能實(shí)現(xiàn) MVC模式下基于裝飾器設(shè)計模式(Decorator Pattern )的 AOP框架,設(shè)計了類攔截器模型實(shí)現(xiàn)多重攔截,相對于傳統(tǒng)使用代理技術(shù)實(shí)現(xiàn)簡單的 AOP框架,Decorator AOP框架在提高系統(tǒng)可擴(kuò)展性方面具有突出的優(yōu)勢,如對日志記錄功能擴(kuò)充記錄錯誤嚴(yán)重級別,又需要記錄優(yōu)先級功能,降低了系統(tǒng)復(fù)雜性及耦合度,提高了系統(tǒng)整體性能及執(zhí)行高效性,并完全分離系統(tǒng)功能和業(yè)務(wù)功能,使基于面向?qū)ο蠹夹g(shù)的 MVC模式可以較好的解決橫切關(guān)注點(diǎn)及其帶來的眾多問題。論文較全面地分析了這些特點(diǎn)與問題,并基于一卡通的具體實(shí)施過程對 Decorator AOP框架的有效性進(jìn)行了驗(yàn)證。
2裝飾器模式的AOP框架設(shè)計方案
2.1 .Net平臺下 AOP攔截器的提出及分析
對于傳統(tǒng) MVC模式下的 Web應(yīng)用系統(tǒng),當(dāng)用戶點(diǎn)擊一個鏈接需要權(quán)限驗(yàn)證時,通常在 Controller層需要接受用戶請求,根據(jù)用戶權(quán)限告訴 Model層執(zhí)行相應(yīng)的權(quán)限管理業(yè)務(wù),最后 Viewer層根據(jù)用戶權(quán)限顯示相應(yīng)功能界面給用戶,可見 MVC模式下每一層都執(zhí)行了權(quán)限管理,這樣系統(tǒng)仍然存在高耦合度。同樣,如果系統(tǒng)存在日志管理功能,使用傳統(tǒng) OOP方法在每一層仍然都需要進(jìn)行日志處理,高耦合度仍然存在, MVC模式優(yōu)點(diǎn)發(fā)揮得并不明顯。因此,我們把類似于權(quán)限管理、日志記錄等功能劃分為系統(tǒng)橫切關(guān)注點(diǎn),利用 AOP思想處理這些橫切關(guān)注點(diǎn)。作者將 JAVA 中 AspectJ[4,5]框架的成熟的思想應(yīng)用到 .Net AOP 上,通過對 Struts的研究,設(shè)計了一種類攔截器模型。圖 1的工作原理圖說明了攔截過濾方法的過程和原理。
全文下載:http://down.yktworld.com/201107/201107062115293566.html