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