我很难理解为什么采用 AO 的速度如此缓慢。主流语言有很多丰富的实现。我的猜测是,就像当时的 OO 一样,这足以使人们不认识它可以帮助他们的地方的范式转变。
那么,除了非侵入式日志记录之外,您已经使用或计划使用 AO 的哪些方法可以降低复杂性、改进维护、增强系统“功能”?
我目前在生产中通过 EntLib / Unity 使用 AOP:
查看http://www.agileatwork.com/unit-of-work-with-unity-and-aspnet-mvc/以了解使用 AOP 的工作单元模式的实现
[UnitOfWork]
public void Process(Job job)
{
...
}
交易管理。我知道这是 AOP 的规范用法,但在用于此时它确实很出色。
虽然我还没有机会在现实世界中使用它,但我认为“环绕建议”非常强大,特别是它通过消除对许多代码的需求来简化代码复杂性所增加的价值检查罕见的情况。
AOP 很常见,只是人们很少称它为 AOP。查看 .NET 编程中使用属性的所有地方。属性本质上是可以应用于许多类/方法/参数的横切行为。
最近,ASP.NET MVC 平台大量使用属性,用于广泛的跨领域组件,例如安全性、数据绑定和异常处理。
我同意 Spring AOP。
AOSD(我们不再谈论 AOP,我不知道为什么)对于中间件/面向服务的体系结构非常有用,在这些体系结构中,您已经通过设计获得了一些模块化。
在这种情况下,我将它用于具有一些非常有限的计费服务的电话服务。
我还用它来构建一种模块化解释器/编译器,以便围绕一些代码执行一些分析。
在我看来,一个问题是切入点语言有时很难准确地描述你想在哪里应用你的建议。另一个问题是作文,我不知道它是否已经解决,但是当你订购你的建议时可能很难理解......
e硬件验证语言使用AOP。
以我的经验,Spring AOP 似乎很常见。
我认为困难在于人们只是不习惯从方面进行思考,并且即使在编译时编织代码也可能有些可怕,因为很难看到实际影响每种方法的因素,例如,esp如果您在编译时和运行时混合使用编织。
我在有一个控制器的情况下使用它,例如,我添加了它是 servlet 还是 web 服务。我还使用它来抽象出数据库,因此可以将数据库连接和数据库优化查询编织到应用程序中。