微软正在为C#中的AOP开发解决方案吗?
微软正在为C#中的AOP开发解决方案吗?(真正的AOP)替代方案是什么微软正在为C#中的AOP开发解决方案吗?,c#,.net,aop,C#,.net,Aop,微软正在为C#中的AOP开发解决方案吗?(真正的AOP)替代方案是什么 附加问题:代码契约是一种AOP吗?作为替代方案,您也可以使用Spring AOP 链接: 注:我更喜欢Unity,你也可以使用Spring AOP 链接: 注:我更喜欢统一是另一种选择。很容易开始使用,尽管它不再免费完全使用 我不知道微软是否还在积极参与这个项目。也许其他人可以对此有所了解 不是(一种)面向方面的编程。是另一种选择。很容易开始使用,尽管它不再免费完全使用 我不知道微软是否还在积极参与这个项目。也许其他人可以对
附加问题:代码契约是一种AOP吗?作为替代方案,您也可以使用
Spring AOP
链接:
注:我更喜欢Unity,你也可以使用Spring AOP 链接: 注:我更喜欢统一是另一种选择。很容易开始使用,尽管它不再免费完全使用 我不知道微软是否还在积极参与这个项目。也许其他人可以对此有所了解 不是(一种)面向方面的编程。是另一种选择。很容易开始使用,尽管它不再免费完全使用 我不知道微软是否还在积极参与这个项目。也许其他人可以对此有所了解
不是(一种)面向方面的编程。大多数.net依赖注入框架都能够使用AOP技术,我个人更喜欢Ninject和Interceptor插件,因为它使用简单,不需要任何第三方属性的类污染或任何东西 尽管如此,Spring.net、Castle Windsor和许多其他DI框架支持相同的原则,但语法和方法略有不同,有些是xml驱动的,有些是c#驱动的,因此可以保证编译时的安全性 需要考虑的一件事是,大多数DI框架都是通过类代理来实现的,因此它们要求您的方法是虚拟的,然后在运行时它代理您的类方法,您可以在该点进行拦截。还有一些其他的方法,比如IL编织,这就是PostSharp所做的,它可以比代理更快,尽管我没有任何测量数据来支持这一点 没有看到额外的问题,对我来说,我会说这不是一个明确的答案,因为这取决于你如何使用它,因为通常你使用AOP作为一种方式来分离你的非功能性关注点,如日志记录、事务可能验证和源代码,所以你从外到内添加这个逻辑,因此,理想情况下,您的源代码不知道AOP正在发生(尽管如果您使用一些第三方属性将源代码耦合到AOP框架,情况并不总是如此)
由于代码契约可以与现有类一起编写,也可以通过属性连接,或者我认为可以在运行时完全注入,就像日志记录一样,您可以将它们全部放入类中,但如果使用AOP方法,则不会。因此,对我来说,代码契约只是一种强制执行某些内容的工具,您可以以AOP方式使用它,也可以将其嵌入到代码中。大多数.net依赖项注入框架都能够使用AOP技术,我个人更喜欢Ninject和Interceptor插件,因为它使用简单,不需要任何第三方属性的类污染或任何东西 尽管如此,Spring.net、Castle Windsor和许多其他DI框架支持相同的原则,但语法和方法略有不同,有些是xml驱动的,有些是c#驱动的,因此可以保证编译时的安全性 需要考虑的一件事是,大多数DI框架都是通过类代理来实现的,因此它们要求您的方法是虚拟的,然后在运行时它代理您的类方法,您可以在该点进行拦截。还有一些其他的方法,比如IL编织,这就是PostSharp所做的,它可以比代理更快,尽管我没有任何测量数据来支持这一点 没有看到额外的问题,对我来说,我会说这不是一个明确的答案,因为这取决于你如何使用它,因为通常你使用AOP作为一种方式来分离你的非功能性关注点,如日志记录、事务可能验证和源代码,所以你从外到内添加这个逻辑,因此,理想情况下,您的源代码不知道AOP正在发生(尽管如果您使用一些第三方属性将源代码耦合到AOP框架,情况并不总是如此)
由于代码契约可以与现有类一起编写,也可以通过属性连接,或者我认为可以在运行时完全注入,就像日志记录一样,您可以将它们全部放入类中,但如果使用AOP方法,则不会。因此,对我来说,代码契约只是一种强制执行某些内容的工具,您可以以AOP方式使用它,也可以将其嵌入到代码中。您可能还对这个相关问题感兴趣:您可能还对这个相关问题感兴趣: