快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
上表的比较,还可以看出非 Java 平台的 AOP 工具 没有 Java 平台的工具成熟,但是应当注意 .NET 和 C++ 工具的用户社区正在成 长。

根据表 1,可以看出,从用户采用度的角度来说,AspectJ、 AspectWerkz、JBoss AOP 和 Spring AOP 是领先的工具。所有这些工具都是适合 用于商业开发中的开源项目。按字母顺序将它们排列如下,包括它们 V1.0 版本 的发布日期:

AspectJ —— 2001 年由 Xerox PARC 的 AOP 小组发行。目前主页在 eclipse.org 上,由 IBM 支持。版本已经更新到 1.2.1 。

AspectWerkz —— 2002 年发布,由 BEA Systems 支持。 版本更新到 2.0RC2。

JBoss AOP —— 2004 年作为 JBoss 应用程序服务器框架的扩展发布。版本 更新到 1.0。

Spring AOP —— 2004 年作为 Spring 框架的扩展发布。版本更新到 1.1.3.

都是为了连接点

本文介绍的每个 AOP 工具都采用了连接点(join point)模型和机制,显式 地声明程序的横切结构。虽然各个工具实现这个框架的技术非常相似,但是理解 底层机制对于了解每项技术的优劣是非常重要的。在这一节中,将回顾 AOP 的连 接点模型以及利用连接点模型的语言模型。

支持机制

AOP 工具的设计目标是把横切的问题(例如认证和事务管理)模块化。在单独 使用面向对象技术实现的的时候,处理这些问题的代码会分散在整个系统中,这 种分散造成管理和发展横切结构时出现不必要的困难。与对象提供了一种能够清 楚地捕获继承结构的语言机制类似,AOP 也为横切问题的良好模块化提供了同样 的好处。位于每个 AOP 工具核心的是连接点模型,它提供了一种机制,可以识别 出在哪里发生了横切。

连接点 就是主程序和方面相遇的地方。静态连接点允许方面定义类上的新成 员。动态连接点是方面执行与程序执行相遇的地方。例如,普通的 Java 程序执 行方法调用、字段设置这样的连接点。再比如说,请考虑一下这样一个问题:对 改变 Account 状态的活动进行监视,就像在 Ramnivas Laddad 的 AspectJ in Action 一书中讨论的那样(请参阅参考资料)。 图 1 中的顺序图突出了在 Account 操作上形成的一些动态连接点。

图 1. 突出了选中的动态连接点的 UML 序列图

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

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

时间:2011-09-04 IBM Mik Kersten

下面的编号与图中的编号对应:

方法执行 连接点,与方法返回之前的生命周期对应。

控制流程 捕捉在控制流程序列中出现的各个连接点;在这个例子中,在 debit() 方法调用下方的序列描述了在 debit() 调用中发生的全部连接点。

字段访问 连接点对应着字段的读和写;在这个例子中,在 Account 类上对 name 字段进行了赋值。

切入点、通知和类型间声明

AOP 工具提供了识别连接点集合的机制,叫作切入点(pointcut)。通知 (advice) 机制指定在程序执行过程中遇到匹配的切入点时应当采取什么行动。 另外,类型间声明(inter-type declaration)(开放类或混合类提供了在现有 类型上声明额外成员的方法。切入点、通知和类型间声明组合在一起,使 AOP 语 言可以清楚地表达横切问题。方面 声明可以在标准的 Java 字段和方法之外包含 这三类成员。方面代表一套模块化良好的横切结构。如下所示,不同的 AOP 技术 实现这些方法的技术各不相同。但是,每种技术的核心,都是连接点的访问、编 辑、命名和抽象机制。

切入点可以通过显式枚举方式描述连接点集合。应当用一个示例指定图 1 所 示的 Account 的利息的三个方法调用。虽然枚举可能很有用,但是用结构化属性 的方式表示连接点通常更方便。这类基于属性的切入点可以表示一套与“每个针 对 Account 子类型的调用”匹配的连接点,却不必强迫程序员枚举这些子

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号