快速业务通道

AOP@Work: AOP工具比较,第1部分-语言机制 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
一节 ,将简要地讨论一些能够有助于进行决策的要点。

自己的风格是什么?

不管选择哪个 AOP 工具,使用通知主体时只涉及到使用 Java 代码。如果需 要修改切入点,那么区别是非常透明的。在使用 XML 风格时(就像在 Spring AOP 中),修改切入点包括:从通知找到 XML 文件中对应的切入点声明。从正面 来说,这项技术把切入点和方面配置的工作全都局限于本地,但是如果要编辑许 多通知和切入点,而且要在 Java 和 XML 之间重复地翻来覆去,那么这项工作就 会变得很繁琐。

如果使用 AspectWerkz 或 JBoss AOP 提供的注释风格,那么就可以把切入点 的表达值从 XML 转移到 Java 成员的注释。这样可以更容易地并发处理通知体和 切入点。如果选择了 AspectJ 的代码风格,那么就会发现处理切入点感觉就像处 理代码,而不像是处理非结构化的字符串值。从 Java 代码能得到的一切(例如 “import”语句),都可以用于切入点。对比之下,如果用 AspectWerkz、JBoss AOP 和 Spring AOP 的 XML 和注释风格,总是需要在规范切入点中的类型引用。

简洁还是繁琐?

方面声明的风格对每个工具中使用的方面有很大的影响。例如,支持在 XML 中声明方面的工具,也支持在同一 XML 文件中对方面应用到系统的方式进行配置 。在前面的小节中,只展示了切入点和方面声明,但是类型间声明同样受到风格 选择的影响。在 AspectJ 中,类型间方法声明看起来就像正常的方法声明,引用 的技术也一样。而在其他技术中,则要指定一个类,扩展额外的混合类并继承那 些额外的成员,通过注释或 XML 添加新方法。注意,目前 AspectJ 是惟一提供 使用切入点的静态强制机制的工具。表 2 比较了这些工具对 AOP 语法的关键元 素的处理技术。

表 2. 比较领先的 AOP 工具中的语法

显然,从图 2-5 的方面声明来看,代 码风格是处理 AOP 声明最简洁的技术。它不需要对通知命名,也不需要显式地调 用通知。代码风格不需要显式地把通知绑定到切入点(就像 XML 风格那样),也 不需要把通知绑定到 return 语句(这是 AspectWerkz 的切入点 “方法”所需要的)。对于可以在 图 3 和 图 4 的 XML 中看到的复杂设计, AspectJ 对 Java 语言进行的语法扩展允许直接表示这些设计。用 AspectJ 编写 方面,感觉起来更像是编写 Java 代码,避免了冗余的键入,因此出错也就更少 。从不好的一面来说,Java 的语法扩展代价巨大,而注释和 XML 风格有它们独 特的优势。最明显的就是 XML 风格可以控制切入点和通知的绑定。这对于扩展和 配置方面非常有益,在下面一节中将讨论这点以及不同风格带来的其他优缺点。

AOP@Work: AOP工具比较,第1部分-语言机制(7)

时间:2011-09-04 IBM Mik Kersten

代码风格与注释和 XML 的比较

那么,应当采用代码风格,还是用注释或 XML 声明方面呢?以下是基于 AspectJ 的 Java 代码的一些技术的优缺点总结:

简明语法充分利用对 Java 代码的熟悉,减少键入错误,使错误更少。

切入点是一级实体,因此更容易对它们进行处理。

对于许多开发人员,用 XML 进行声明性编程要比用 Java 语言扩展更熟悉。

通知到切入点的绑定不能由开发人员控制。

如果这个小结仍然无法缩小决策范围,那么不要担心。除了用每种风格编写这 些方面的感觉之外,还有更多需要考虑的东西。当在下一节中查看语义的时候, 语法决策还会出现,而且也会影响在第 2 部分中讨论的工具支持。

语义的相似性

虽然工具的方面声明风格之间存在主要的语法差异,但是核心的 AOP 语义是 类似的。每个工具都有完全相同的连接点模型的概念,都把连接点作为 Java 程 序中的关键点,把切入点作为匹配连接点的机制,把通知作为指定连接点匹配时 执行操作的机制。

表 3 和 表 4

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号