AOP技術(shù)及其應用 AOP技術(shù)及其應用

AOP技術(shù)及其應用

  • 期刊名字:福建電腦
  • 文件大?。?81kb
  • 論文作者:閆兆振,賈作皆
  • 作者單位:山東科技大學(xué)
  • 更新時(shí)間:2020-10-30
  • 下載次數:次
論文簡(jiǎn)介

2006年第7期福建電腦63AOP技術(shù)及其應用閆兆振,賈作皆(山東科技大學(xué)信息學(xué)院山東青島266510)[摘要]: AOP技術(shù)利用橫切關(guān)注點(diǎn)的機制,可以很好的解決一些00P及面向過(guò)程編程所不能解決的問(wèn)題,作為一種”新的編程思想得到了越來(lái)越多的關(guān)注。本文首先介紹了研究AOP所涉及的基本技術(shù)和概念,并給出了AOP技術(shù)的一個(gè)應用實(shí)例。[關(guān)鍵詞]: AOP,橫切關(guān)注點(diǎn),方面面向對象編程(OP)技術(shù)在現今的編程領(lǐng)城取得了巨大的術(shù) ,利用截取消息的方式,對該消息進(jìn)行裝飾,以取代原有對象成功,對象(Object)的概念也已經(jīng)作為計算機編程領(lǐng)域的基礎概行為的執行; 二是采用靜態(tài)織人的方式,引人特定的語(yǔ)法創(chuàng )建念深人人心。對象提供了對現實(shí)領(lǐng)城中的問(wèn)題的一個(gè)很好的抽“方面",從而使得編譯器可以在編譯期間織人有關(guān)“方面”的代象,但是,在很多的編程問(wèn)題中,這些對象可能會(huì )因為混合的屬碼。 然而殊途同歸實(shí)現AOP的技術(shù)特性卻是相同的,分別為:性和與對象最初意圖不-致的操作而變得混亂,從而不能夠很1)連接點(diǎn)(join point):是程序執行中的一個(gè)精確執行點(diǎn),清晰地描述程序所要實(shí)現的一些重要的設計思想。而這些問(wèn)題例 如類(lèi)中的一個(gè)方法。它是一個(gè)抽象的概念,在實(shí)現AOP時(shí),并使用00P技術(shù)并不能很好地解決,比如在日志管理、權限控制、不需要去定義一個(gè)連接點(diǎn)。事務(wù)處理等方面,應用00P將這些內容封裝為對象的行為則會(huì )2)切入點(diǎn)(point cut):本質(zhì)上是一個(gè)捕獲連接點(diǎn)的結構。在產(chǎn)生大量的代碼重復,雖然通過(guò)一些設計模式可以減少這種重AOP 中,可以定義一個(gè)切入點(diǎn),來(lái)捕獲相關(guān)方法的調用。復,但我們還有更好的解決辦法,那就是AOP(Aspect Oriented3)通知(advice):是切人點(diǎn)的執行代碼,是執行“方面"的具Programming)。AOP是最近興起的一種編程思想,它能很好地解體邏輯。決一些00P及面向過(guò)程編程所不能解決的問(wèn)題,是00P思想4)方面(aspect):連接點(diǎn)和通知結合起來(lái)就是“方面”,它類(lèi)的有益補充。AOP利用一種稱(chēng)為“橫切"的技術(shù),剖解開(kāi)封裝的對似于 00P中定義的一個(gè)類(lèi),但它代表的更多是對象間橫向的關(guān)象內部,并將那些影響了多個(gè)類(lèi)的行為封裝到一個(gè)可重用模塊,系稱(chēng)為“Aspect" ,即方面,這樣就有利于減少系統的重復代碼,降5)引人(itroduce):為對象引入附加的方法或屬性,從而達低模塊間的耦合度,并有利于未來(lái)的可操作性和可維護性。到修改對象結構的目的。 有的AOP工具又將其稱(chēng)為mixin。AOP作為一種提高軟件的“概念分離”技術(shù),已經(jīng)受到越來(lái)越多上述的技術(shù)特性組成了基本的AOP技術(shù),大多數AOP工的重視。具均實(shí)現了這些技術(shù)。它們也是研究AOP技術(shù)的基本術(shù)語(yǔ)。下1.什么是AOP面介紹AOP技術(shù)中的幾個(gè)重要概念:AOP ( Aspeet- -Oriented Progranming)最早是由施樂(lè )(Xerox) 2.2 橫切公司在美國加州硅谷Palo Alo研究中心(PARC)的首席科學(xué)家、“橫 切“是AOP的專(zhuān)有名詞,是在一個(gè)給定的編程模型中穿加拿大大不列顛哥倫比亞大學(xué)教授Gregor Kicgales 等人在越既定 的職責部分(比如日志記錄和性能優(yōu)化)的操作。它是一1997年的歐洲面向對象編程大會(huì )(ECOOP 97)上提出的一種編種蘊含 強大力量的相對簡(jiǎn)單的設計和編程技術(shù),尤其是用于建程范式。他們在1990年就開(kāi)始對面向對象思想的局限性進(jìn)行了立松散耦合 的、可擴展的企業(yè)系統時(shí)。使用“橫切"技術(shù),AOP把分析,研究出了這樣一種新的編程思想,并借助這一思想或許可軟件系統分為兩個(gè)部分:核心關(guān)注點(diǎn)和橫切關(guān)注點(diǎn)。業(yè)務(wù)處理的以通過(guò)減少代碼重復模塊從而幫助開(kāi)發(fā)人員提高工作效率。隨主要 流程是核心關(guān)注點(diǎn),與之關(guān)系不大的部分是橫切關(guān)注點(diǎn)。橫著(zhù)研究的逐漸深人, AOP也逐漸發(fā)展成- - 套完整的程序設計思切關(guān)注點(diǎn)的一個(gè)特 點(diǎn)是,他們經(jīng)常發(fā)生在核心關(guān)注點(diǎn)的多處,而想。各處都基本相似。比如權限認證、日志、事務(wù)處理。AOP的作用在A(yíng)OP,從字面的理解來(lái)看就是面向切面的編程,用--個(gè)比較于分離系統中的各種關(guān)注點(diǎn),將核心關(guān)注點(diǎn)和橫切關(guān)注點(diǎn)分離通俗的例子來(lái)說(shuō),比如在訪(fǎng)向多個(gè)對象前需要進(jìn)行權限檢查,那開(kāi)來(lái)。么如果按照面向對象的思路來(lái)說(shuō),權限檢查勢必會(huì )成為這多個(gè)如果不使用橫切技術(shù),軟件開(kāi)發(fā)是怎樣的情形呢?在傳統的對象的行為。如果每個(gè)對象都需要去實(shí)現這些行為勢必會(huì )造成程序中 ,由于橫切行為的實(shí)現是分散的,開(kāi)發(fā)人員很難對這些行大量重復代碼的產(chǎn)生,寫(xiě)程序也會(huì )變得枯燥無(wú)味。但我們可以將為進(jìn)行邏輯上的實(shí)現或更改。例如,用于日志記錄的代碼和主要權限檢查看作是一個(gè)切面,所有對這些對象的訪(fǎng)問(wèn)都要經(jīng)過(guò)這用于 其它職貴的代碼纏繞在一起。根據所解決的問(wèn)題的復雜程個(gè)切面。AOP技術(shù)正是通過(guò)編寫(xiě)橫切關(guān)注點(diǎn)的代碼,即“方面",度 和作用域的不同,所引起的混亂可大可小。更改- - 個(gè)應用程序分離出通用的服務(wù)以形成統一的功能架構。它能夠將應用程序的 日志記錄策略可能涉及數百次編輯_即使可行,這也是個(gè)中的商業(yè)邏輯同對其提供支持的通用服務(wù)進(jìn)行分離,使得開(kāi)發(fā)令 人頭疼的任務(wù)。人員從重復解決通用服務(wù)的勞動(dòng)中解脫出來(lái),而僅專(zhuān)注于企業(yè)橫切技術(shù)分為動(dòng)態(tài)橫切和靜態(tài)橫切,動(dòng)態(tài)橫切是通過(guò)切人的核心商業(yè)邏輯。.A0P就是這樣一種關(guān)注點(diǎn)分離技術(shù),通過(guò)運用點(diǎn)和連 接點(diǎn)在一個(gè)方面中創(chuàng )建行為的過(guò)程,連接點(diǎn)可以在執行Aspect這種程序設計單元,允許開(kāi)發(fā)者使用結構化的設計和代時(shí) 橫向地應用于現有對象。動(dòng)態(tài)橫切通常用于幫助向對象層次碼,反映其對系統的認識方式。要使設計和代碼更加模塊化、更中 的各中國煤化工E。在很多應用場(chǎng)景中,動(dòng)具結構化,就要使關(guān)注點(diǎn)局部化而不是分散于整個(gè)系統中。同態(tài)橫切二黃切技術(shù)的核心主要包括時(shí),需使關(guān)注點(diǎn)和系統其他部分保持良好定義的接口,從而真正join poC N M H Cadvce(通知)和epee達到“分離關(guān)注點(diǎn)分而治之”的目的。面)。靜態(tài)橫切和動(dòng)態(tài)橫切的區別在于它不修改-一個(gè)給定對象的2.AOP的基本技術(shù)和概念執行行為。相反,它允許通過(guò)引入附加的方法字段和屬性來(lái)修改2.1 AOP實(shí)現的基本技術(shù)對象的結構。此外,靜態(tài)橫切可以把擴展和實(shí)現附加到對象的基實(shí)現AOP的技術(shù),主要分為兩大類(lèi):一是采用動(dòng)態(tài)代理技本結構中。在A(yíng)OP實(shí)現中,通常將靜態(tài)橫切稱(chēng)為introduce或者福建電腦2006年第7期mixin。LogritlisoinPoin. geSignaeret:osuring0:2.3關(guān)注點(diǎn)一個(gè) 關(guān)注點(diǎn)(concem)就是一個(gè)特定的目的,一塊我們感興如果僅僅熟悉Java編程,會(huì )發(fā)現有很多關(guān)鍵字是Java語(yǔ)言趣的區域, - 段我們需要的邏輯行為。在A(yíng)OP中,我們將那些具中不曾包含的,它們都是AspeeJ提供的。有公共邏輯的,與其他模塊的核心邏輯糾纏在一起的行為稱(chēng)為分析上述的代碼,首先是方面的聲明,它類(lèi)似于Java 當中.“橫切關(guān)注點(diǎn)”,因為它跨越了給定編程模型中的典型職責界限。的類(lèi)聲明定義了一個(gè)方面Autolog,在這個(gè)方面中分別包含了從技術(shù)的角度來(lái)說(shuō),一個(gè)典型的軟件系統包含- 些核心的切點(diǎn)和通知。關(guān)注點(diǎn)和系統級的關(guān)注點(diǎn)。舉個(gè)例子來(lái)說(shuō),一個(gè)信用卡處理系統切點(diǎn)共有四個(gè):customMehod vpublicMehoed JogbjcCalls的核心關(guān)注點(diǎn)是借貸存入處理,面系統級的關(guān)注點(diǎn)則是日志、和lgbaCall,方面AutoLog首先聲明-個(gè)帶參數的抽象切點(diǎn)事務(wù)完整性授權、安全及性能問(wèn)題等,許多關(guān)注點(diǎn),即橫切關(guān)注customMethod,子類(lèi)可以通過(guò)重寫(xiě)該切點(diǎn)決定日志決定的范圍。點(diǎn),會(huì )在多個(gè)模塊中出現。如果使用現有的編程方法,橫切關(guān)注并利用customMethod聲明了另外-個(gè)切點(diǎn)publicMethod,因此點(diǎn)會(huì )橫越多個(gè)模塊,結果是使系統難以設計理解、實(shí)現和演進(jìn)。切點(diǎn)publicMethod將捕捉所有customMethod內部所有方法和AOP能夠比上述方法更好地分離系統關(guān)注點(diǎn),從而提供模塊化org-apache.cactus包中的所有公共方法的執行。當這些方法被調的橫切關(guān)注點(diǎn)。2.4方面用時(shí),就會(huì )執行切點(diǎn)的advice 代碼。而在切點(diǎn)中execution是-方面是實(shí)現橫切關(guān)注點(diǎn)的實(shí)體,就像ooP中能完成獨立功個(gè)原始的Pointeut(就象int是- - 種原始的Java類(lèi)型)。它選擇與能的組件。方面定義切入點(diǎn)和通知(advice),并由方面編譯器來(lái)括號中定義的方法說(shuō)明匹配的任何方法的執行,方法說(shuō)明允許編譯,以便將橫切織人到現有的對象中,然后織人器則使用這些包含通配符。切點(diǎn)logObjecCalls則捕捉Logger類(lèi)中的所有方法信息來(lái)構建最終系統。的執行。第三個(gè)切點(diǎn)比較待殊,它使用&& !合并了前兩個(gè)切點(diǎn),2.5織入這意味著(zhù)這個(gè)切點(diǎn)捕捉了除Logger類(lèi)中的公共方法以外,切點(diǎn)織人是指把方面自動(dòng)地織人到軟件系統的各個(gè)功能模塊中customMethod 內部的所有方法和org.apache.cactus中所有的公的動(dòng)作,它依照提供給它的規則把不同的執行邏輯段混編起來(lái),共方法的執行。通知在切點(diǎn)中被用來(lái)完成實(shí)際的日志紀錄。通知分為三種,這樣就可以把非功能代碼加入到功能代碼中,從而改變了系統分別為before ater和around,如上述代碼中定義的通知:的結構和行為??椚耸菍?shí)現AOP的一個(gè)重要機制,從總體方法上來(lái)講,可beorel(ogbleCallsl以分為兩類(lèi):動(dòng)態(tài)織人和靜態(tài)織人。靜態(tài)織人是指在業(yè)務(wù)功能代碼中的適當位置,比如某段代碼執行前,或執行后,將方面中的編碼插人,從而形成混合的編碼方面中的編碼在程序運行前,該通知的定義表示的含義是,如果customMethod的內部方已被內聯(lián)至業(yè)務(wù)功能代碼中,因此,代碼可以被優(yōu)化。從而使織法 或org.apache.cactus中所有的公共方法(Logger類(lèi)的公共方法人產(chǎn)生的開(kāi)銷(xiāo)最小化,最終產(chǎn)生的混合代碼,其執行速度接近為除外)被執行 則在這些方法執行之前,需要先執行該通知所定使用AOP方式編寫(xiě)的代碼。但是,靜態(tài)織人無(wú)法做到在程序運義的邏輯。針對于某一個(gè)具體的類(lèi),使用一個(gè)子繼承抽象類(lèi):行時(shí),根據運行上下文動(dòng)態(tài)的決定插入的方面代碼,動(dòng)態(tài)織入則publie aspeet Customlog extends Aulolog可以做到這一點(diǎn)。動(dòng)態(tài)織人可以在程序運行時(shí),根據上下文決定調用的方面,它們的先后順序,增加或刪除-一個(gè)方面等。3. AOP的應用實(shí)例(custonclss2);近幾年,AOP技術(shù)受到了越來(lái)越多的關(guān)注,隨著(zhù)研究的逐漸深人,各種應用AOP的技術(shù)也應運而生。AOP 技術(shù)是在Java這樣,原有代碼無(wú)需做任何改變,當指定類(lèi)customClass和平臺下最先得到應用的,面AspectJ是目前最成熟的也是應用得customclass2 的內部方法被調用時(shí),相關(guān)的日志記錄就會(huì )輸出。最普遍的AOP工具,AspectJ通過(guò)定義一套Java語(yǔ)言的擴展系4. 結束語(yǔ)統,使開(kāi)發(fā)者可以方便的進(jìn)行面向方面的開(kāi)發(fā)。下面就以.目前,AOP作為一種編程技術(shù)仍然是- -種新的思想。它是AspeuJ為例說(shuō)明使用AOP技術(shù)的8志記錄的實(shí)現過(guò)程。一種 對代碼進(jìn)行再分析、再處理而解決橫切關(guān)注點(diǎn)問(wèn)題的技術(shù),設定我們的開(kāi)發(fā)項目中需要應用到日志記錄,我們可以從能夠很好地解決 -些00P及面向過(guò)程編程所不能解決的問(wèn)題,這個(gè)需求中識別出橫切關(guān)注點(diǎn)---日志記錄。 因此,我們需要首其提 出不是一種00P的替代,面是00P思想的有益補充。雖然先定義關(guān)于“日志記錄”的aspect:有越來(lái)越多的人開(kāi)始關(guān)注和研究AOP,但作為一種新思想,要成Abostract aspet AutoLag為一個(gè)主流的編程方法還有很長(cháng)的路要走。Abstract pointeut cusomMethod(Oject ob);rB參考文獻:apache.c...1. Spring and Aspcy 2005, Intermaional Confetence on Aspect- OrientedSofware Development2. Robent E.Flman What Is Apeat -Oriented Progamming Reristed.beorel:aogbleCalls03.石丹丹,王靜,熊前興,面向方面編程模式的探討,武漢理工大學(xué)學(xué)報0),2005 1:92-95.Lopgerentny(hisJoinPoint BetSigature0-tsSring0);4.郭東光,張立臣面向方面軟件開(kāi)發(fā)研究,計算機應用研究],2005 8:36-38.5. AOP中國煤化I)edsig/ rpc...6. AOPn/articles/241012.html.MYHCNMH G

論文截圖
上一條:談DRM技術(shù)
版權:如無(wú)特殊注明,文章轉載自網(wǎng)絡(luò ),侵權請聯(lián)系cnmhg168#163.com刪除!文件均為網(wǎng)友上傳,僅供研究和學(xué)習使用,務(wù)必24小時(shí)內刪除。
欧美AAAAAA级午夜福利_国产福利写真片视频在线_91香蕉国产观看免费人人_莉莉精品国产免费手机影院