有没有人知道AspectJ和PostSharp之间的AOP功能是不同的(是的,我知道他们是针对不同的语言和平台)?AspectJ和PostSharp之间的功能差异是什么?
我想了解AspectJ会允许哪种PostSharp不会,反之亦然。
有没有人知道AspectJ和PostSharp之间的AOP功能是不同的(是的,我知道他们是针对不同的语言和平台)?AspectJ和PostSharp之间的功能差异是什么?
我想了解AspectJ会允许哪种PostSharp不会,反之亦然。
PostSharp 2.0更接近的AspectJ比PostSharp 1.5了。 PostSharp 1.5与Spring AOP的比较是合理的,但PostSharp 2.0不再适用。
但是,方法仍然存在一些很大的差异。
切入点的方法是截然不同的。 AspectJ提供了一个复杂的切入点语言。 PostSharp提供了一个基本的声明式切入点系统,但使您能够开发命令式切入点,因此您可以编写在编译时评估切入点的代码(通常使用System.Reflection)。因此,不要使用切入点语言,PostSharp支持纯C#或Linq。
确实没有条件切入点(cflow)。
PostSharp支持高阶语义,如事件和属性。 AspectJ,据我所知,没有(因为Java afaik中没有事件或属性)。
PostSharp方面通常在构建时实例化和初始化,然后序列化到程序集中,并在运行时反序列化以执行。这允许该方面在构建时“初始化”,因此运行时性能更好。它也允许在构建时执行任意复杂的逻辑(通常是初始化,切入点评估,连接点验证)。
PostSharp对方面组合有真实的支持,即您可以以预测的方式将多个方面或建议应用到同一个连接点。 PostSharp专为多供应商场景而设计,其中多个供应商不了解彼此。它具有复杂的依赖关系系统,方面开发者/供应商可以指定声明性排序约束,需求和冲突。
从版本2.0开始,PostSharp附带IDE工具,部分涵盖Eclipse的“AJDT”功能。
从他们PostSharp的文档: http://doc.postsharp.org/1.5/##PostSharp.HxS/UserGuide/Laos/AspectKinds/Overview.html
支持的类型的连接点: http://doc.postsharp.org/1.5/##PostSharp.HxS/UserGuide/CoreLibrary/CodeWeaver/Overview.html
的AspectJ提供作为连接点可以是决然更复杂的,为了做一个很大的更大的灵活性你要。
看来,cflow,例如,不能用PostSharp完成。
就像Spring一样,它是AOP的精简版,以便于使用。
更新:虽然我不相信它是完全更新,这是一个好主意,因为什么AspectJ的支持: http://www.eclipse.org/aspectj/doc/released/progguide/index.html
您是否有类似AspectJ的链接来记录支持的连接点? – LBushkin 2009-10-21 19:07:46
AspectJ处于不断变化之中,文档记录滞后,因此您最好的选择是从Manning Publications获取该书:http://www.manning.com/laddad2/。 AspectJ具有足够的灵活性,使您自己很容易受伤。 – 2009-10-21 19:11:50
PostSharp 2.1文档链接:http://doc.sharpcrafters.com/postsharp-2.1/Default.aspx##PostSharp-2.1.chm/html/c722d645-0892-489d-858d-bf5c51b90174.htm – sgpalit 2012-10-03 12:38:48