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