AOP@Work: AOP工具比较,第1部分-语言机制 - 编程入门网
总结了每种技术的语义。您可以注意到,命令规范上有许多微 小的差异和变化,但是各种技术最终聚合在相同的核心概念上。这种聚合有很大 的好处,因为这意味着学习曲线很容易从一项 AOP 技术转移到另外一项 AOP 技 术。剩下来要考虑的就是每种技术的差异所带来的优劣了。
回到连接点 一个 AOP 工具连接点模型的表达方式决定了可用的连接点粒度,以及连接点 如何匹配。每个 AOP 工具都提供了大量用于连接点匹配的原生切入点。有些原生 切入点只与特定类型的连接点匹配(例如,方法执行)。其他切入点能够根据连 接点的公共属性(例如,在某个控制流程中的所有连接点)匹配任何类型的连接 点。连接点的类型以及它们特定的切入点,可以分成以下几组: 调用(Invocation)—— 调用或执行方法和其他代码元素时的点。 初始化(Initialization)—— 初始化类和对象时的点。 访问(Access)—— 读写某些字段时的点。 异常处理(Exception handling)—— 抛出和处理异常与错误时的点。 另外,也支持以下没有类型的切入点分类: 控制流程(Control flow)—— 在某个流程控制流程中的连接点。 包含(Containment)—— 与包含在某个类或方法中的代码位置对应的连接点 。 条件(Conditional)—— 特定预测为真的连接点。 如表 3 所示,每个工具实现连接点模型的方式,以及它们用来匹配连接点的 原生切入点,都略有差异。注意,在某些情况下(在括号中表示),连接点不用 切入点标识。 表 3. 连接点和用来匹配连接点的原生切入点 AOP@Work: AOP工具比较,第1部分-语言机制(8)时间:2011-09-04 IBM Mik Kersten要富于表现力还是要简单? 在这里主要的优劣在于富于表现力和简单性的比较。更加完整和精细的切入点 集合允许通过方面访问程序执行中更多有趣的点。例如,与持久性有关的方面可 能需要访问对象的初始化连接点。但是这类完整性也会带来额外的复杂性和更陡 峭的学习曲线。许多 Java 程序员并不区分调用和执行,而且没有几个人需要理 解初始化的微妙之处。而且许多常用的方面被当作是辅助性的,所以是否有表现 力与应用程序的功能并没有紧密耦合。在常用的辅助性方面,例如监视和日志, 通常只利用了粗粒度的切入点(例如方法执行)。从反面来看,更广泛的切入点 集合确实具备量入为出的属性,因为切入点可以边用边学。如果不想用切入点制 作程序,那么会造成面向对象代码的强制重构,例如:以 AspectJ 和 AspectWerkz 的连接点模型差不多完全融合,而且已经成为最近 的合并的关键促进者之一。JBoss AOP 模型几乎同样有表现力,只是为了简单性 而遗漏了一些不太常用的连接点。一个明显的差异是:在 JBoss Aop 中,不能把 控制流程表示成“在这个切入点的执行之下的所有连接点”。相反,程序员需要 手动列出调用堆栈中的每个调用。 Spring AOP 采用了不同的技术,目的是限制它的连接点模型的表现力。这使 它特别容易采用,而且对于一些粗粒度的横切很有用。即将发行的版本将与 AspectJ 集成,提供与精细横切机制的互操作性。 连接点模型的表现力与简单性的比较 一些项目可以从更有表现力的连接点模型(例如 AspectWerkz、AspectJ 和 JBoss AOP 提供的)获益,所以最好还是采用 Spring AOP 粗粒度的方便性?以 下是更有表现力的模型固有优缺点的一个总结,多考虑一下这些方面会对您有所 帮助: 了解更多知识 。 对于粗粒度的横切和辅助性方面,只需要很少的切入点。 没有精细的切入点,许多方面就不能表达。 使用新切入点的学习曲线是随用随学。 语言机制 我将用每种技术语言机制的详细对比结 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |