【问题标题】:Built-in AOP in C# - is it on the way?C# 中的内置 AOP - 正在开发中吗?
【发布时间】:2010-10-24 10:33:46
【问题描述】:

在大型应用程序中,我发现自己真的希望我有内置的 AOP 工具。在 C# 中,你能做的最好的事情就是工厂和 RealProxys、PostSharp、ICorDebug、ICorProfiler 或注入框架。没有干净的内置方式来执行 AOP。

是否有任何迹象(博客文章/内部讨论)表明 AOP 正在进行中?

【问题讨论】:

    标签: c# .net aop


    【解决方案1】:

    Romain 的回答(几乎 :) 完美地涵盖了当前的解决方案。至于未来的支持,Anders Hejlsbergpreviously stated 表示他们对 AOP 处于观望状态。

    我们只能希望通过 csc 的托管重写和“编译器即服务”,可以插入编译器,并在那里注入方面。

    【讨论】:

    • 你们用单声道做原生 AOP 吗?
    • Mono wrt AOP 没有什么特别之处。不过,我们已经有了一个托管编译器,它很容易被破解,这将是一个很好的起点,让一些东西感觉更集成到编译器中。
    • 看看这个,显然不会发生sharpcrafters.com/blog/post/…
    【解决方案2】:

    我还没有听说过“干净的内置 AOP 方式”。但正如你所说,已经有很多“干净的 AOP 方法”,使用成熟而强大的框架,如 PostSharpCastle DynamicProxy

    使用 BCL 进行 AOP 的一种明显方法是使用 .NET Remoting 堆栈中的透明且真实的代理,这种方法具有很强的局限性。

    另一种方法是依靠 System.Reflection.Emit 来动态生成代理,比如,嗯,来自 Castle 的 DynamicProxy。

    最后,还有另一个微软官方标记的解决方案,它与Enterprise Library 一起提供。我说的是Policy Injection Application BlockUnity 还提供了一些利用 PIAB 的拦截功能。

    【讨论】:

    • PostSharp 商业化,不适合那种图书馆。
    • @aloneguid 我很确定 V1.5 仍然是免费的,并且仍然提供比许多其他静态编织器更多的功能。另外,为什么您会认为有些库可以商业化而有些则不能?
    • 更新 Unity Interception 文档的链接:msdn.microsoft.com/en-us/library/ff660891(PandP.20).aspx
    【解决方案3】:

    Spring.NET 也提供 AOP。它需要进行大量配置,但一旦设置好,它就会运行良好。

    【讨论】:

      【解决方案4】:

      5 月发布的 Delphi Prism 在语言级别支持 AOP。

      您可以在这里找到更多信息

      http://prismwiki.codegear.com/en/Cirrus

      这个位置还有一个方面的开源库

      http://code.remobjects.com/p/prismaspects/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-06-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-10
        • 1970-01-01
        相关资源
        最近更新 更多