平特心水报图
新網絡營銷基礎與實踐

你的位置:首頁 >網絡營銷 >AOP

AOP

     AOP為Aspect Oriented Programming的縮寫,意為:面向切面編程(也叫面向方面),可以通過預編譯方式和運行期動態代理實現在不修改源代碼的情況下給程序動態統一添加功能的一種技術。AOP實際是GoF設計模式的延續,設計模式孜孜不倦追求的是調用者和被調用者之間的解耦,AOP可以說也是這種目標的一種實現。

     AOP,是目前軟件開發中的一個熱點,也是Spring框架中的一個重要內容。利用AOP可以對業務邏輯的各個部分進行隔離,從而使得業務邏輯各部分之間的耦合度降低,提高程序的可重用性,同時提高了開發的效率。

  AOP是OOP的延續,是(Aspect Oriented Programming)的縮寫,意思是面向切面(方面)編程。

  主要的功能是:日志記錄,性能統計,安全控制,事務處理,異常處理等等。

  主要的意圖是:將日志記錄,性能統計,安全控制,事務處理,異常處理等代碼從業務邏輯代碼中劃分出來,通過對這些行為的分離,我們希望可以將它們獨立到非指導業務邏輯的方法中,進而改變這些行為的時候不影響業務邏輯的代碼。

  可以通過預編譯方式和運行期動態代理實現在不修改源代碼的情況下給程序動態統一添加功能的一種技術。AOP實際是GoF設計模式的延續,設計模式孜孜不倦追求的是調用者和被調用者之間的解耦,AOP可以說也是這種目標的一種實現。

  在Spring中提供了面向切面編程的豐富支持,允許通過分離應用的業務邏輯與系統級服務(例如審計(auditing)和事務(transaction)管理)進行內聚性的開發。應用對象只實現它們應該做的——完成業務邏輯——僅此而已。它們并不負責(甚至是意識)其它的系統級關注點,例如日志或事務支持。

  Aspect Oriented Programming(AOP)是近來較為熱門的一個話題。AOP,國內大致譯作“面向方面編程”。“面向方面編程”,這樣的名字并不是非常容易理解,且容易產生一些誤導。因曾不止一次聽到類似“OOP/OOD11即將落伍,AOP是新一代軟件開發方式”這樣的發言。顯然,發言者并沒有理解AOP的含義。

  Aspect,沒錯,的確是“方面”的意思。不過,華語傳統語義中的“方面”,大多數情況下指的是一件事情的不同維度、或者說不同角度上的特性,比如我們常說:“這件事情要從幾個方面來看待”,往往意思是:需要從不同的角度來看待同一個事物。這里的“方面”,指的是事務的外在特性在不同觀察角度下的體現。而在AOP中,Aspect的含義,可能更多的理解為“切面”比較合適。所以更傾向于“面向切面編程”的譯法。

  另外需要提及的是,AOP、OOP在字面上雖然非常類似,但卻是面向不同領域的兩種設計思想。OOP(面向對象編程)針對業務處理過程的實體及其屬性和行為進行抽象封裝,以獲得更加清晰高效的邏輯單元劃分。而AOP則是針對業務處理過程中的切面進行提取,它所面對的是處理過程中的某個步驟或階段,以獲得邏輯過程中各部分之間低耦合性的隔離效果。這兩種設計思想在目標上有著本質的差異。

AOP應用范圍

  很明顯,AOP非常適合開發J2EE容器服務器,目前JBoss 4.0正是使用AOP框架進行開發。
  具體功能如下:
Authentication 權限
Caching 緩存
Context passing 內容傳遞
Error handling 錯誤處理
Lazy loading 懶加載
Debugging  調試
logging, tracing, profiling and monitoring 記錄跟蹤 優化 校準
Performance optimization 性能優化
Persistence  持久化
Resource pooling 資源池
Synchronization 同步
Transactions 事務

AOP有必要嗎?

  當然,上述應用范例在沒有使用AOP情況下,也得到了解決,例如JBoss 3.XXX也提供了上述應用功能,但是沒有使用AOP。

  但是,使用AOP可以讓我們從一個更高的抽象概念來理解軟件系統,AOP也許提供一種有價值的工具。可以這么說:因為使用AOP結構,現在JBoss 4.0的源碼要比JBoss 3.X容易理解多了,這對于一個大型復雜系統來說是非常重要的。

  從另外一個方面說,好像不是所有的人都需要關心AOP,它可能是一種架構設計的選擇,如果選擇J2EE系統,AOP關注的上述通用方面都已經被J2EE容器實現了,J2EE應用系統開發者可能需要更多地關注行業應用方面aspect。

AOP具體實現

  AOP是一個概念,并沒有設定具體語言的實現,它能克服那些只有單繼承特性語言的缺點(如Java),目前AOP具體實現有以下幾個項目:

  AspectJ (TM): 創建于Xerox PARC. 有近十年歷史,成熟
  缺點:過于復雜;破壞封裝;需要專門的Java編譯器。

  動態AOP:使用JDK的動態代理API或字節碼Bytecode處理技術。

  基于動態代理API的具體項目有:
  JBoss 4.0 JBoss 4.0服務器
  nanning 這是以中國南寧命名的一個項目,搞不清楚為什么和中國相關?是中國人發起的?
  JdonFramework Jdon自己的IoC AOP框架 粗粒度AOP

網絡營銷詞典內容均由網友提供,僅供參考。

平特心水报图 从淘宝上卖什么赚钱 赛车pk10定位技巧 浙江福彩快乐12开奖结果 江苏快3技巧稳赚方法 彩票助赢计划软件下载 海盗大亨5种什么赚钱 麻将老虎机漏洞 pk10冠军百期错一 大乐透中奖规则及奖金 助赢计划软件不准了