当前位置:  开发笔记 > 编程语言 > 正文

应用AOP

如何解决《应用AOP》经验,为你挑选了2个好方法。

我一直在使用一些基本的AOP风格解决方案来解决交叉问题,如安全性,日志记录,验证等.我的解决方案涉及Castle Windsor和DynamicProxy .我走了这条路,因为我可以使用基于Boo的DSL来应用所有内容,并保持我的代码清除属性.周末我被告知要看看PostSharp,因为它应该是一个"更好"的解决方案.我已经快速浏览了PostSharp,但是我被属性使用所拖延了.

有没有人尝试过两种解决方案,并愿意分享他们的经验?



1> Stacy A..:

PostSharp的一些小问题......

我使用PostSharp的一个问题是,在使用asp.net时,异常消息的行号由PostSharp注入到asssemblies中的IL指令的数量"out",因为PDB也没有被注入:-).

此外,如果没有在运行时可用的PostSharp程序集,则会发生运行时错误.使用Windsor,可以在以后关闭横切,而无需重新编译代码.

(希望这是有道理的)


这是一个非常古老的答案,我偶然发现,但我只想注意PostSharp现在实际上转换了PDB文件,因此调试问题已不复存在(请参阅:http://stackoverflow.com/questions/2006508/postsharp -pdb调试和引用的组件)

2> Mendelt..:

我只看了很短的时间(至少)城堡 - 温莎,所以我不能对此发表评论,但我确实使用了postharp.

Postsharp通过编译时编织工作.它会为您的构建添加一个后编译步骤,修改代码.编译代码就好像您只是将横切问题编程到代码中一样.这比运行时编织更有效,并且由于使用了属性,Postsharp非常易于使用.我认为使用AOP的属性并不像将它用于DI那样有问题.但这只是我的个人品味.

但...

如果你已经使用城堡进行依赖注入,我没有看到你不应该将它用于AOP的原因.我认为虽然运行时的AOP比编译时慢一点,但它也更强大.AOP和DI在我看来是相关的概念,所以我认为两者都使用一个框架是个好主意.所以我可能会再次看看城堡的东西,下一个项目我需要AOP.

推荐阅读
女女的家_747
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有