簡體   English   中英

在C#/ .Net中進行面向方面編程(AOP)的最佳/最流行的方法是什么?

[英]What are the best/most popular ways to do aspect-oriented programming (AOP) in C#/.Net?

在C#/ .Net中進行面向方面編程(AOP)的最佳/最流行的方法是什么?

  • Castle中的DynamicProxy可能是在CLR上進行AOP最常用的工具。
  • Spring框架還通過其Spring.Aop命名空間提供AOP功能。

Postsharp是另一個眾所周知的:“將AOP引入.NET!” 我只有很少的經驗,但它看起來不錯,值得一看。

PostSharp很好。 我已經使用它大約一年了。 它易於安裝並且具有相當淺的學習曲線,考慮到它能夠實現幾乎神聖的力量。 此外,似乎既有活躍的開發人員社區,也有響應式開發人員。

查看PostSharp主頁上的代碼示例。 這些都是使用PostSharp完成的簡單方面的好例子。

我已經使用Spring.Net AOP Framework大約9個月了。 它非常強大,即使在運行時而不是在編譯期間進行編織,似乎也沒有在使用中施加性能損失。 唯一需要注意的是,盡管您正在應用建議的對象不需要了解Spring.Net AOP,但它們必須至少實現一個接口。 這個文檔,順便提一下,對於Spring.Net來說非常好,它聲明這個限制將在未來版本中刪除,但不會給出路線圖。

Spring.Net AOP不要求您使用Spring.Net框架的其余部分,可以單獨使用。

對於幾種不同類型的東西,我一直在玩自己。 我有一些運氣。 通常,我創建一個接口,用類實現它,然后創建一個實現接口的代理,執行我想要的任何前提條件步驟,調用真實對象的方法,然后執行我想要的任何后置條件步驟。 使用這種方法我的主要煩惱之一是你不能在一個接口中有構造函數,並且你也不能在接口中使用靜態方法,所以沒有明顯的地方可以放置這種類型的代碼。 困難的部分是代碼生成 - 因為你要么發出IL,要么你要發出你必須編譯的C#。 但這只是我的方法。 它迫使我一次考慮一個方面,實際上 - 我還沒有達到可以抽象出“方面”並用這些術語思考的程度。 簡而言之:滾動你自己或找到你喜歡的工具集,可能來自Eric Bodden的名單

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM