我想描述一下在应用程序设计中有效参与AOP的可能情况。所有我迄今遇到的是:可能的AOP用例有哪些?
- 记录相关
- 安全检查
- 事务管理
- 的调整遗留应用程序
还有什么呢?
(它不必是必然Spring基于代理的AOP - 相当的JBoss AOP)
我想描述一下在应用程序设计中有效参与AOP的可能情况。所有我迄今遇到的是:可能的AOP用例有哪些?
还有什么呢?
(它不必是必然Spring基于代理的AOP - 相当的JBoss AOP)
我可以举两个例子,我们使用它:
在JMX中自动注册对象以进行远程管理。如果一个类注解了我们的@AutoRegister
注解,我们有一个方面可以监视该类的新实例并自动将它们注册到JMX中。
审计日志(黄金标准AOP使用情况)。它有点粗糙,但一般的方法是注释代表一些可审计行为的方法。与像Spring Security的结合,我们可以得到一个不错的主意:
除了列出的所有内容之外,AOP的有效使用还可以进行验证。验证用户输入或业务对象。你必须看
相关文章。
方法级别的缓存,如果你的方法是无状态的(我是指返回时用相同的参数值重复调用相同的值)。这对DAO方法更有效,因为它避免了数据库命中。
要查看AOP的适用范围,我真的建议您阅读Aspect-Oriented-Software-Development-Use-Cases。本书阐述了使用AOP的功能和非功能需求的用例。之后,你会看到,方面可以用于更多的要求比日志记录,追踪,安全等。
我也会推荐用于几个方面:
随着春的tcServer(开发者),你可以轻松地监视你所有的Spring Bean与 @Component注释。你可以看到使用的时间,输入和返回的数据,包括例外。
INotifyPropertyChanged和类似的恐惧。
基本上只要有像这样的代码 - 使用一个方面,你就完成了。
我们将其用于软件许可证管理,即只有当计算机安装了某些特定许可证时才允许软件运行。这与您列出的用途没有什么不同,因为它是一种安全检查。
我发表了一篇博客条目描述实际执行代码合同here
运行时检查。 Code Contracts for .NET使用AOP为
运行时检查。我们的二进制重写器通过注入契约来修改程序,这些契约被检查为程序执行的一部分。
我们使用AspectJ来完成AOP。除上述提到的用例如下:
“可能的情况下”?这是一个近乎*无限的*集合。然而,并非所有人都是一个好主意。把一切都可能。有什么办法缩小或集中这个问题吗? – 2010-02-04 02:57:45
阅读顺利:问题包含“在应用程序设计中有效启用AOP的可能案例”。我的意思是使用AOP是个好主意。对不起,如果问题不清楚。 – 2010-02-04 02:59:28
应该是社区维基 – skaffman 2010-02-04 09:54:00