<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 176, comments - 240, trackbacks - 0, articles - 7

    AOP有什么用

    Posted on 2006-11-19 19:59 canonical 閱讀(2736) 評論(6)  編輯  收藏 所屬分類: 設計理論
    ? 隨著IoC(Inversion of Control)容器的流行,AOP(Apsect Oriented Programming)似乎逐漸成為了主流技術的一部分,但是除了Transaction, Lazy Load, Cache, Log等少量樣板應用之外,AOP的技術價值究竟何在? 它能否在廣泛的領域發(fā)揮作用? 為什么考慮到傳統(tǒng)領域之外的應用時,我們的想象力是如此的貧乏?回答這些問題需要對AOP的技術實質作詳細的審視.
    ? 傳統(tǒng)上, 程序的結構是靜態(tài)的. 定義了一個類, 它的成員變量和成員函數(shù)就是確定的了,定義了一個函數(shù), 它的具體實現(xiàn)也是確定的. 傳統(tǒng)程序設計主要定義了一些固化的規(guī)則來規(guī)范這些確定性組分的組合關系,如類繼承體系所表達的推理關系. 而AOP是一種動態(tài)代碼織入技術, 抽象的說, 一維拓撲的基本元素是線段與邊, 而AOP通過mixin, interceptor等機制可以自由的實現(xiàn)這些元素之間的自由組合而不拘泥于預制的規(guī)則. AOP就像是一把鋒利的砍刀, 我們用它從最終所期望的程序結構中隨意的砍下一部分來, 起個名字,就叫Aspect吧. 實際上AOP技術本身并沒有限定程序中哪些部分可以作為Aspect, 這種技術本身并不保證你可以抽象得出真正有價值的Aspect, 它只是一種純粹的程序結構操縱技術而已.
    ? AOP技術有兩個主要組成部分: 定位技術和定位后的組裝技術. 定位技術是AOP所宣稱的無侵入性的關鍵所在. 如果我們使用interface等機制來實現(xiàn)功能,則要在程序各處寫下調用語句:
    ??? interfaceA.methodA();
    ??? ...
    ??? interfaceA.methodB();
    這可以看作是一種占位技術. 定位技術則一般不需要預先在程序中寫下什么調用語句, 根據(jù)外部的某些定位規(guī)則,我們可以在基礎的程序結構中搜索到適當?shù)奈恢? 在理論上說,這種定位方式非常靈活, 即可以是非常精準的定位到某個點,也可以是非常寬泛的定位到一組切入點. 但是, 這里的一個隱含假設是程序基礎結構本身已經具備了良好的,具有某種均一性的坐標系, 只有這樣我們才能夠擁有定位所需的基本信息. 想象一下,如果整個程序只有一個函數(shù), 所有功能的實現(xiàn)通過傳入不同的參數(shù)值來實現(xiàn), 則這樣的程序結構中是沒有什么可定位性而言的. 早期AOP定位所能夠依賴的坐標只有類,方法名稱, 方法參數(shù)類型等, 而這些信息本身又具有自己的業(yè)務含義,隨著業(yè)務的發(fā)展,它們本身的名稱也可能需要不斷的變化,這直接造成AOP所依賴的坐標系的不穩(wěn)定性.今天還有效的位置描述, 明天也許就突然包括了某些不應該包含進來的程序位置或者排除了某些應在其中的位置. 在JDK5.0中補充的annotation機制為程序補充了新的坐標維度, 基于它無疑可以建立更加靈活而且專用的坐標系統(tǒng), 它對于AOP的價值必然會逐漸被發(fā)掘出來. 在javascript這樣的動態(tài)語言中,雖然它們內置的動態(tài)性直接支持程序結構的動態(tài)組裝, 但是在定位支持方面卻要比java這樣的語言弱上很多, 在其上建立AOP應用未見得比java更具優(yōu)勢. 從另外一個角度上說, 定位方式也并不總比占位方式優(yōu)越. 我們需要牢牢記住"一次描述"的優(yōu)勢在于可以"多次應用". 有的時候我們用很多唇舌去描述一個物品看起來像什么什么樣, 有多么大, 多么重, 還不如直接拿給人看, 說:嘿, 就是這個(this).同樣在程序中, 占位方式可能更加直接簡單,甚至因為代碼明確寫在那里,概念也更加明確,更加完整. 此外, 在一些特定的程序結構中, 需要定位的位置大大減少, 我們也不需要復雜的定位機制. 例如在witrix的jsplet框架中, 因為它特殊的規(guī)范一致性造成程序的處理點只有一個, 應用AOP是一個非常直接的過程.
    ? AOP的第二個組成部分是組裝技術. 程序結構的組裝在java中早已不是什么技術難點, 很多人干起這活來都是輕車熟路. 但是組裝不僅僅意味著程序結構的融合, 它同時意味著程序運行時狀態(tài)空間的融合. 在AOP的基礎模型中, 在切入點可以得到的變量有this指針,調用函數(shù)對象和傳入?yún)?shù)列表, 但是AOP本身并沒有進一步規(guī)范化這些變量的具體形式, 因此在一般情況下, 這些變量對于interceptor來說是只讀的, interceptor之間也無法通過這些變量交換信息并協(xié)同運行. 這實際上意味著在切點處inteceptor的狀態(tài)空間是極端受限的. 而當一個切面橫跨很多切點的時候, 在interceptor中一般只能對切點處狀態(tài)空間的共性部分進行操作, 這進一步限制了interceptor的能力.實際上目前AOP的主要應用都是無狀態(tài)的,或者是基于全局狀態(tài)空間的(例如transaction interceptor只訪問線程上下文), 這反映出對于AOP的primitive方式的應用的一種局限性. 在witrix平臺的BizFlow設計中,通過對狀態(tài)空間明確建模, 實現(xiàn)了基于AOP概念的一種新的應用方式.
    ? AOP需要對程序坐標空間和狀態(tài)空間的良好規(guī)劃, 才能保證無縫的織入, 保證信息交互通道的通暢.應用AOP所指的不僅僅是配置使用現(xiàn)有的AOP實現(xiàn), 基于這種程序結構操控技術我們所需要做的抽象工作還很多.
    ?

    Feedback

    # re: AOP有什么用  回復  更多評論   

    2006-11-20 09:00 by 海藍
    @canonical
    Sorry,看完了我還是想問一句:AOP到底有什么用?
    如果用小標題來突出一下,是否會更容易讓大家理解?

    # re: AOP有什么用  回復  更多評論   

    2006-11-20 09:35 by hitlhy
    本來明白一點兒。。
    看完了又糊涂了
    尤其那個什么定位技術和組裝技術。。

    # re: AOP有什么用  回復  更多評論   

    2006-11-20 10:48 by 無極中人
    關于AOP,EasyJF發(fā)布的這個AOP教程非常適合新手!
    http://www.tkk7.com/easyjf/archive/2006/11/16/80322.html

    # re: AOP有什么用  回復  更多評論   

    2006-11-20 10:49 by 無極中人
    不好意思,剛才地址錯了,AOP應該是下面這個地址!
    http://www.tkk7.com/easyjf/archive/2006/11/16/81487.html

    # re: AOP有什么用  回復  更多評論   

    2006-11-20 22:20 by canonical
    我所寫的一般都是理論分析,并不是針對初學者的介紹性內容.
    AOP是一種很少限制的結構操縱技術, 你可以去想象它的應用

    # re: AOP有什么用  回復  更多評論   

    2006-12-02 17:00 by partech
    正巧我現(xiàn)在也在作這方面的思考,方面應該可以應用到軟件開發(fā)的各個領域。
    目前正在探索這種方法,下面是我的思考:
    http://partech.blogdriver.com/partech/1247359.html
    主站蜘蛛池模板: 精品无码国产污污污免费| 84pao强力永久免费高清| 美女裸免费观看网站| 一级特级女人18毛片免费视频| 美女被免费网站91色| 久久精品无码精品免费专区| 国产一卡二卡四卡免费| 又粗又硬又大又爽免费视频播放| 久久激情亚洲精品无码?V| 亚洲手机中文字幕| 免费看黄福利app导航看一下黄色录像| 国产一区二区三区免费| 免费无码看av的网站| 精品成人一区二区三区免费视频| 久久永久免费人妻精品下载| 亚洲日韩精品无码专区网站| 亚洲av永久无码嘿嘿嘿| 久久av免费天堂小草播放| 国产亚洲精品va在线| 亚洲成av人在线观看网站| 日本亚洲欧洲免费天堂午夜看片女人员 | 黄色毛片免费在线观看| 国产午夜亚洲精品国产成人小说| 中文字幕一区二区免费| 国产亚洲精品免费| 亚洲人成在线播放| 67194成手机免费观看| 亚洲乱亚洲乱妇无码麻豆| 日本高清不卡中文字幕免费| 亚洲精品tv久久久久久久久| 欧洲乱码伦视频免费| 亚洲综合精品香蕉久久网97| 免费福利资源站在线视频| 亚洲色精品vr一区二区三区| **一级毛片免费完整视| 另类图片亚洲校园小说区| 久久青青草原亚洲AV无码麻豆| 免费激情网站国产高清第一页 | 亚洲国产成人久久精品99| 亚洲αⅴ无码乱码在线观看性色| 久久精品国产亚洲7777|