概念

  • Aspect-Oriented Programming(AOP):想想OOP是不是有些熟悉,AOP翻譯過(guò)來(lái)的意思就是面向切面編程。先來(lái)關(guān)注一下涉及到的以下幾個(gè)概念點(diǎn)。

  • 橫切關(guān)注點(diǎn):
    存在于項(xiàng)目的絕大多數(shù)業(yè)務(wù)中可以通用的一些輔助性的功能。例如日志、安全、持久化等模塊。它們存在于核心業(yè)務(wù)代碼塊的各個(gè)地方,卻又獨(dú)立于這些核心業(yè)務(wù)邏輯。
    如圖所示:


    Paste_Image.png

  • 切面:
    這些橫切關(guān)注點(diǎn)的統(tǒng)一抽象。

  • 所以面向切面編程,就是將項(xiàng)目的輔助性功能(如日志、異常處理、緩存處理等)與業(yè)務(wù)邏輯進(jìn)行分離,把繁瑣的輔助性代碼抽離出來(lái)不用重復(fù)Copy,使得程序具備更高的模塊化。


實(shí)現(xiàn)方式

  • 靜態(tài)織入
    即編譯時(shí)織入,實(shí)現(xiàn)原理是對(duì)編譯器做擴(kuò)展,使得在代碼編譯時(shí)編譯器將切面代碼織入到指定的切點(diǎn)。

  • 動(dòng)態(tài)織入
    即運(yùn)行時(shí)織入,編譯器在編譯時(shí)對(duì)切面代碼和業(yè)務(wù)代碼分別獨(dú)立編譯,而在運(yùn)行的時(shí)候由CLR進(jìn)行代碼混合。


.Net平臺(tái)的切面實(shí)現(xiàn)——PostSharp

    網(wǎng)友評(píng)論