国产aaaa级全身裸体精油片_337p人体粉嫩久久久红粉影视_一区中文字幕在线观看_国产亚洲精品一区二区_欧美裸体男粗大1609_午夜亚洲激情电影av_黄色小说入口_日本精品久久久久中文字幕_少妇思春三a级_亚洲视频自拍偷拍

AOP技術(shù)及其應(yīng)用 AOP技術(shù)及其應(yīng)用

AOP技術(shù)及其應(yīng)用

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

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

論文截圖
上一條:談DRM技術(shù)
版權(quán):如無特殊注明,文章轉(zhuǎn)載自網(wǎng)絡(luò),侵權(quán)請聯(lián)系cnmhg168#163.com刪除!文件均為網(wǎng)友上傳,僅供研究和學(xué)習(xí)使用,務(wù)必24小時內(nèi)刪除。