横切需求/关注在编程中意味着什么?

时间:2009-10-15 07:06:00

标签: service soa

这些我在编程世界中遇到了很多“横切要求/关注点”。

虽然我认为我知道这意味着什么,但我还没有一个明确的想法。我在Web服务和SOA中听到了很多。

可以使用 hello world 示例来解释吗?

3 个答案:

答案 0 :(得分:8)

它往往意味着“你想要在许多地方做的事情,这与那段代码的真正含义无关”。

常见的例子是:

  • 交易处理
  • 安全
  • 登录
  • 错误处理

我发现它通常是针对Aspect-Oriented Programming(AOP)提到的,它通常试图以声明方式处理这样的事情,例如带有属性/注释。作为一种粗略的简化,它是一种应用样板代码(例如,在当前上下文中验证用户的身份/权限,或者记录方法的进入/退出)而不会使代码本身混乱的情况。

答案 1 :(得分:3)

横切的标准“hello world”示例是日志记录:您的生产系统中存在错误,并且您不知道发生了什么。要解决这个问题,您确实需要查看代码中的哪些函数被调用以及它们获得的参数和返回的内容。

这是一项可以完全自动化的简单任务:找到所有函数(或使用某种过滤器的子集)并向其添加日志记录调用,以打印名称和参数。由于代码包含完成此任务所需的所有信息,因此您真正需要的是一个为您执行此操作的工具,它可以在一个位置执行(而不是让您编辑数千个源文件,在任何地方添加日志语句)。

答案 2 :(得分:2)

我建议您查看Postsharp之类的框架,然后从postsharp网站试用this示例。如果你知道java,AspectJ的一个值得一看。但首先,您可能需要阅读Jon Skeet发布的链接:)