代码之家  ›  专栏  ›  技术社区  ›  Chris Canal

应用AOP

  •  12
  • Chris Canal  · 技术社区  · 16 年前

    我一直在使用一些基本的AOP风格的解决方案来解决安全、日志记录、验证等交叉问题。我的解决方案已经解决了 Castle Windsor 和动态氧气。我走了这条路,因为我可以使用基于boo的DSL应用所有东西,并保持代码中没有属性。周末有人叫我去看看 PostSharp 因为它应该是一个“更好”的解决方案。我已经快速浏览了postsharp,但是由于属性的使用,我被耽搁了。

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

    2 回复  |  直到 16 年前
        1
  •  9
  •   Mendelt    16 年前

    我只看了温莎城堡很短的时间(还没有),所以我不能对此发表评论,但我确实使用了后竖琴。

    Postshap在编译时通过编织来工作。它将编译后的一步广告到您的构建中,并在其中修改您的代码。代码的编译就好像您刚刚将横切关注点编程到代码中一样。这比运行时编织更具性能,而且由于使用了属性,PostSharp非常容易使用。我认为为AOP使用属性没有为DI使用属性那么麻烦。但这只是我个人的爱好。

    但是…

    如果您已经使用castle进行依赖项注入,我看不出一个很好的理由为什么您不应该将它也用于AOP东西。我认为尽管运行时的AOP比编译时慢一点,但它也更强大。在我看来,AOP和DI是相关的概念,所以我认为对两者都使用一个框架是个好主意。所以我可能会再看看城堡的东西下一个项目我需要AOP。

        2
  •  14
  •   Stacy A    16 年前

    后置竖琴的几个小问题…

    我在PostSharp中遇到的一个问题是,在使用ASP.NET时,异常消息的行号是由PostSharp注入组件中的IL指令数“out”,因为PDB也没有被注入:-)。

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

    (希望这有道理)