我正在尝试找出一种优雅的方法来收集信息,用于跨多个类的多个操作/方法调用的审计/历史记录目的。有人对如何收集这些数据有任何想法/意见吗?
对于我的具体示例,我需要与 Web 服务交互以同步两个系统之间的数据。这涉及几种不同的操作,这些操作可能会提供需要记录的有用信息。
为了下载数据,我需要;
- 与网络服务通信以获取数据。
- 要收集的数据;
- 网络服务查询的摘要信息(记录 ID、类型、上次更新时间等)
- 有关 Web 服务调用期间引发的任何异常的信息。
- 从网络服务检索数据(或异常)所需的时间(以秒为单位)
- 要收集的数据;
- 通过本地验证规则验证接收到的数据
- 要收集的数据;
- 验证错误。
- 如果有效,则接收到的数据的 XML 表示形式和同一对象的本地表示形式。
- 要收集的数据;
- 将验证的数据保存到本地数据库
- 要收集的数据;
- 数据库调用期间的任何异常
- 要收集的数据;
- 保存审核/历史记录,详细说明上面收集的所有信息。
在将信息上传到 Web 服务期间会存储类似类型的数据,我们会收集 Web 服务/数据库通信期间的异常、通过 FaultException 从 Web 服务收到的验证错误、Web 服务通信所花费的时间等。
对于我当前的解决方案,我当前创建了一个带有占位符的 AuditHistory 对象来存储各种信息,并将其传递给各种类方法并在每个方法调用期间填充它。最后,我只是保存这个审计历史对象。它可以工作,但感觉又丑又笨重。
任何想法都会受到赞赏。
最佳答案
不完全是一种模式(更完整的范式转变),但对于您所描述的内容,您可能需要考虑 Aspect-Oriented Programming .
或者,如果您希望坚持使用 OO 范式,您可以尝试合并 Observer ,使您需要跟踪的所有内容都可观察,并让审计数据收集器观察它们。
关于design-patterns - 我是否可以应用特定的模式来收集多个操作的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6827176/