這個庫至少應該和AspectJ相比,有哪些?在.Net世界中使用的任何成熟的AOP庫?
回答
你可以嘗試各種IOC容器,配備了AOP開箱即用(例如Spring.Net有一個強大的AOP freamework,溫莎城堡有Interceptors也是如此Unity),使用Snap那些或使用IL-織女像Postsharp。
更新 我只是發現了關於「Afterthought」的 - 儘管在開發的早期 - 看起來很有希望。它的目標是成爲Postsharp的一個開源替代品。
我忘了提Mono.Cecil它能夠IL編織以及:
在簡單的英語,與塞西爾,可以加載現有的管理組件,瀏覽所有包含的類型,修改它們的飛行並將修改後的程序集保存到磁盤。
Fody使用Cecil進行編織,並允許在構建階段集成該步驟。它帶有一些方便的插件(例如在編譯後實現INotifyPropertyChanged
或從公共屬性生成ToString
方法)。
我一直在四處尋找完全相同的東西,我可以很自信地告訴你.Net中沒有任何東西可以在各方面與AspectJ進行遠程比較。
在.net世界中,我發現動態代理經常用作AOP機制。 只有少數支持像Postharp和Afterthoughts這樣的實際IL編織的工具,它們都可以通過屬性聲明性編程來實現Aspect Orientation。它們都易於使用,但是如果您來自AOP背景(AspectJ),我不確定它們會是您稱爲AOP的。
到目前爲止,我還沒有看到任何.Net實現的「真正」AOP模式(正如十年前正式定義的那樣,即切入點,連接點,建議,方面等),可能是因爲很少有人意識和興趣一般來說,AOP的常用用途通常侷限於日誌記錄,事務管理和異常策略,而IoC和屬性通常就足夠了。
在.NET的這個階段,商業規則和域驅動代碼的AOP仍然很少被看到(也沒有被任何工具支持)。
我最近遇到的只有一個開源項目似乎開始填補這個空白(http://sheepaop.codeplex.com),看起來還很早,但看起來像是一個AspectJ-ish實現。正如我前面所說,它仍然不會與AspectJ(根據你的問題)進行比較,但這種相似性非常明顯,似乎是故意的。
由於問題與.NET有關,因此您可以使用Nemerle語言,它具有強大的元編程功能。
Nemerle還允許編譯具有宏屬性的C#源代碼。 這樣你就可以用C#獲得AOP。 – 2013-04-05 18:59:23
這是否意味着Nemerle編譯器包含C#編譯器? – ironic 2013-04-08 08:30:40
是的,Nemerle可以解析C#源代碼並編譯它。您可以將.cs文件添加到您的項目中,並且它可以工作。無論如何,你可以寫任何前端Nemerle編譯器,如VB.Net,源代碼在這裏:https://github.com/rsdn/nemerle/tree/master/snippets/csharp-parser – 2013-04-14 11:37:13
- 1. UPS與.NET的世界集成
- 2. Jetty for NET世界
- 3. 成熟的IMAP庫
- 4. .net世界中的FIT-like測試
- 5. C#中是否有任何成熟的P2P框架/庫?
- 6. 在藍牙世界中,如何熟知GUID轉換爲設備UUID的
- 7. 在Java中使用lwjgl的3D世界?
- 8. 有H2數據庫的任何真實世界的經驗?
- 9. 真實世界中使用的逆變和協方差.net
- 10. 您使用了「堆棧」對象(.Net)的真實世界使用
- 11. Bukkit生成世界
- 12. 是否有任何真實世界的CPU不使用IEEE 754?
- 13. Java世界中是否有任何automocking庫?
- 14. Github-Flavored Markdown任務列表在現實世界中使用?
- 15. 在「現實世界」中使用單一責任原則
- 16. 在MATLAB中生成世界地圖
- 17. 重構的成熟 - .NET依賴注入
- 18. 任何需要在Ajax世界中的視圖狀態
- 19. Haskell中的任何成熟庫用於網絡數據包處理?
- 20. 使用Silverlight中的世界國家
- 21. php中的特質 - 任何真實世界中的例子
- 22. 在dotnetcore DI世界中使用助手
- 23. SOA架構使用.NET的真實世界示例
- 24. 使用Newman-Watts算法在igraph中生成小世界模型
- 25. i18n世界您好世界
- 26. 真實世界中使用自定義.NET屬性
- 27. 如何在真實世界的項目中使用數據庫觸發器?
- 28. 真實世界Windows Azure成本計算示例,任何人?
- 29. 生成世界盃賽組
- 30. 使用AOP登錄.net
+1適用於PostSharp,它非常強大且非常易於使用 – 2011-04-09 00:07:17