我正在尝试为 OLTP Web 应用程序的内部组件实现统计报告。例如,我想近乎实时地跟踪以下内容的使用情况或性能:成功/失败登录的数量、nhibernate session 的数量、服务 HTTP 请求的时间、不同类型的交易数量(订单、访问等)。所有这些统计数据都通过 UDP 发送到 statsd 服务器 (https://github.com/etsy/statsd) 并使用 Graphite 绘制为图表。
该应用程序使用依赖注入(inject)来连接内部组件。我想将统计报告集中到 statsd 服务器自己的类中,并将其隐藏在界面下。然而,我觉得在应用程序的每个组件中注入(inject)统计报告类/接口(interface)的实例,报告性能或使用数据是一种味道。在我看来,性能报告事件应该是一个跨领域的关注点,非常像日志记录。
您如何处理此类请求的内部设计?您会使用构造函数注入(inject)、静态方法(例如 PerformanceCounters.Increment("name.of.counter"))来调用我的受监控组件吗?
如果对上下文有任何帮助,该应用程序是用 C# 完成的,并使用 ASP.NET 和 CaSTLe Windsor 作为 IoC。
谢谢, 罗伯特
最佳答案
我使用 Spring.Net 来做类似的事情。据我所知,Spring 与 IoC 的 CaSTLe Windsor 非常相似,Spring 使用 CaSTLeWindsor 创建动态代理。这些可以用于 Spring 支持的 AOP。学习曲线很短,框架有很好的文档记录。配置完性能方面后,将其应用到您的方法中应该非常容易。如果您想要少量 sample ,请告诉我。
关于c# - 处理横切问题,例如 Web 应用程序组件的内部统计报告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9392738/