这个库至少应该和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