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

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

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

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

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

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