【发布时间】:2012-02-22 20:28:53
【问题描述】:
我正在尝试为 OLTP Web 应用程序的内部组件实现统计报告。例如,我想近乎实时地跟踪以下事物的使用或性能:成功/失败登录的数量、nhibernate 会话的数量、服务 HTTP 请求的时间、不同类型的交易数量(订单、访问等)。所有这些统计数据都通过 UDP 发送到 statsd 服务器 (https://github.com/etsy/statsd) 并使用 Graphite 绘制成图表。
应用程序正在使用依赖注入来连接内部组件。我想将统计报告集中在一个自己的类中,并将其隐藏在一个接口下。但是,我想在应用程序的每个组件中注入一个统计报告类/接口的实例,这些组件报告性能或使用数据是一种气味。在我看来,绩效报告事件应该是一个横切关注点,很像日志记录。
您如何处理此类请求的内部设计?您是否会使用构造函数注入、静态方法(例如 PerformanceCounters.Increment("name.of.counter"))(称为我的受监控组件)或如何处理?
如果对上下文有任何帮助,该应用程序是用 C# 完成的,并且使用 ASP.NET 和 Castle Windsor 作为 IoC。
谢谢, 罗伯特
【问题讨论】:
-
这是一个横切关注点,就像日志记录一样。看到这个答案:stackoverflow.com/questions/7905110/…
标签: c# design-patterns inversion-of-control performancecounter