快速业务通道

AOP@Work: AOP和元数据:完美的匹配,第2部分-用元数据实现多维接口 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
要的是关注点的模块性而不是遗忘。在 AOP 上下文中, 遗忘属性 要求核心系统不知道横切功能。例如,考虑一个需要在事务中调用某些 操作的银行系统。遗忘属性要求核心银行系统不知道是事务管理方面建议进行这 些操作。

注释可以有两种表现方式。首先,可以用注释标记元素,这样,切入点就可以 选取注释的元素。该元素实质上是客户驱动的参数,其中,注释只是为了支持切 入点而存在。其次,可以将元素标记为它们总是声明其非核心功能,不管是否需 要切入点。这两种方式的区别可能只在于角度的不同,不过:在后一个例子中, 带有注释的元素不知道方面(或者其他元数据消费者),因而保持了遗忘属性。

更进一步进行分析,当您将元数据视为“方面化的接口”,并遵守好的接口设 计通常所采用的好的做法时,就会自动保持遗忘属性。事实上,保持遗忘性就是 在正确的地方使用正确的注释类型,如在前面准则中所讨论的那样。

元数据与 AOP 采用

恰当地消费元数据是 Java 开发人员在未来几年所面临的有意义的挑战之一。 Java 程序的元数据相对来说是一个比较新的概念(即使考虑 XDoclet 所做的努 力),而新的 Java 元数据功能是第一个将元数据一直保留到运行时的实用方法 。因此,Java 开发人员需要通过实践来完全了解和优化新功能的使用,不管有没 有 AOP。

也就是说,在使用正确的情况下,元数据可以使新人和有经验的开发人员更容 易理解 AOP,并使 AOP 更有可能被广泛采用。结合元数据与 AOP 的好处是双重 的:首先,用传统的切入点语法不能捕获某些具有非核心横切功能的连接点,这 一直是令 AOP 的早期使用者头痛的一个问题。虽然像 Participant 模式这样的 设计模式可能不真正需要元数据支持就能得到类似的结果,但是它们并不容易使 用。正如我在本文中所展示的,元数据可以方便地捕获这些连接点来充实横切功 能。

在 AOP 中使用元数据对 AOP 的采用带来的第二个好处是它减缓了采用曲线。 即使在当前的初期阶段,元数据也可以成为学习面向方面的编程的某种“培训轮 (training wheel)”(正如 Bruce Tate 所说的,请参阅 参考资料)。对于编 写第一个 AOP 类型的程序的开发人员而言,道路仍然不是很平坦。经验的欠缺会 使在本文中讨论的准则难以得到遵循,结果可能类似(正如前面提到的)美化的 宏。

不过,按这个过程进行是有好处的。当新的范式更方便时,它自然会深入到连 接点签名的内在功能(以及类似 Participant 的模式)中并使用更抽象的元数据 。这种使用表示了元数据使用与 AOP 使用的一种平衡,还可能成为向释放 AOP 终极功能方向迈进的一步。同时,我们都会摸索出在结合这两种技术时可以遵循 的更多最佳实践。

结束语

标准元数据功能提供了表示关于程序元素的额外信息的方便方法。如果使用得 当,这个功能可简化软件系统的创建。虽然有许多利用元数据的方法,但是在与 AOP 结合时它可以工作得最好。在本文中讨论的最佳实践是迈向在 AOP 中充分利 用元数据的第一步。除了准则,我还介绍了一些最适合结合元数据的 AOP 场景, 讨论了在三种最重要的 AOP 系统中对元数据的支持,并对一个 AOP 系统进行系 统化的重构,以结合元数据。我还展示了将元数据视为多维关注点空间的签名的 一种全新思路,这是一种与使用 AOP 范式和不使用该规范的开发人员都非常有关 的创建元数据类型的用法。

AOP 和元数据的结合就像是天作之合。在 Java 平台上加上标准元数据功能, 并在不同的 AOP 系统上支持它,可以很好排除 AOP 进入主流的最后障碍。不过 ,就像其他天作之合一样,这需要双方了解彼此的长处和短处,并尊重对方的界 线。我祝双方能够幸福地生活在一起!

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