快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
是考虑如何表示方法的状态 修改特征。

抽象注释类型的更多例子

让我们再讨论几个注释类型的例子。考虑使用 WaitCursor 作为注释类型来模 块化等待游标的管理,这类管理是围绕具有这种类型的注释实例的所有方法进行 的。可以省略的代码非常多(特别是当考虑每个方法所需要的 try/finally 块时 )。不过,还有使用更能描述功能的注释类型的多种可能。考虑另一种注释类型 Timing,它类似于 mean、 variance 和 distribution 这样的属性,如下所示:

@Timing(mean=5, variance=0.34, distribution=Gaussian)

可以用几种方法消费这个注释:

进行速率单调性分析(Rate Monotonic Analysis,即 RMA,请参阅参考资料 )。

提供运行时间长的操作的反馈(如等待游标)。

当然,这种高度特定 的功能表达只在拥有定性的计时数据时才适合。否则,可以使用定性信息。例如 ,注释实例可以是 @Timing(value=Long)。这种方案遵守了描述连接点功能的原 则,并提供了下面这些有意义的可能性:

进行选择,只对那些带有某种计时功能的方法进行分析。

检查计时信息的自我一致性,如查找在标记为 Large 值的方法的计算路径中 出现的、用 ExtraLong 值标记的方法。

考虑另一个例子,在该例中,方法是 用 RetryOnFailure 注释标记的,这样一个方面就可以再次尝试失败的服务。如 果使用 Idempotent 作为注释类型(表示对同一操作的多次调用会产生同样的结 果),那么不仅可以重试失败的操作,而且还可以同时执行多个服务,如果需要 这样的优化的话。

最后,考虑上面的授权和身份验证的例子。权限属性可以是所需权限的直接表 达。对这一概念的更好表述是指定对操作进行分类的一个属性。然后,方面就可 以将分类映射到实际的权限,这些权限在不同的系统之间可以发生改变。例如, 一个系统可能无法从访问控制的角度区分读写操作,而另一些系统则可以对此进 行区分。比这更好的一种方法是使用业务相关的注释类型,如 AccountModification、CustomerInformationAccess 和 Purchase。包含这些类 型的注释的程序元素不仅能被授权和身份验证方面所捕获,而且还可被其他实现 捕获,比如隐私策略增强方面。不过,从头创建这种类型很复杂。一种实用方法 是从一个可以工作的入门 级的抽象开始重新构建这种类型,以获得更好的应用。

AOP@Work: AOP和元数据:完美的匹配,第2部分-用元数据实现多维接口(9)

时间:2011-09-04 IBM Ramnivas Laddad

智慧来源于经验

如果正在实现横切关注点,并且不能遵循上面的准则,那么也可以使用面向方 面的解决方案,即使这意味着“标记”每一个需要一个通知的方法。使用带标记 的 AOP 至少实现了某种模块化,并使您具有获得某种程度的修改实现的自由度。

标记方法要求使用元数据驱动的切入点编写方面,然后用在切入点中使用的注 释类型来注释程序元素。这种用法类似于使用美化了的宏功能。虽然通过注释类 型,代码使核心元素与方面之间有了强烈的依存关系,但是这样可以节省很多代 码(通过将共同代码转移到一个方面或者通知中,而不是将它放到每一个方法中 )。所得到的模块性还有助于限制对方面自身实现的关注点的修改。

智慧来源于经验。即使从标记方法开始,您也很快就会了解更深入的内容,并 相应地对实现进行修改(通常是重新构建)。还记得您用 OOP 最初做的几个设计 吗?利用您现在掌握的知识,重新评价最初的 OOP 设计,您可能会发现它们没有 达到应有的抽象程度,尽管这种设计仍然好于纯粹的过程式方法。与此类似,在 AOP 中第一次使用元数据可能会有一个从 OOP 到 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号