繁体   English   中英

测量Web Service每层花费的时间

[英]Measure the time spent in each layer of a Web Service

我有一个基于多层体系结构(即表示,逻辑,数据访问等)的WCF REST Web服务(.NET 4)。 在运行时和没有检测的情况下,我想测量单个请求为每个层花费多少时间(例如,Presentation = 2 ms,Logic = 50 ms,Data = 250 ms)。

考虑到我无法更改方法签名以传递StopWatch(或任何类似的东西),您将如何完成这样的事情?

谢谢!

如果您无法向解决方案添加代码,您最终将使用分析器来检查代码正在执行的操作,但我只建议在除生产之外的环境中,除非您只是在性能方面存在问题。 有很多方法可以在负载下设置另一个环境和配置文件。

Profilers将挂钩您的代码并检查每个方法需要多长时间。 没有“这是业务层性能”的神奇之处,因为分析器实现了物理边界(类,方法)而不是逻辑边界,但您可以检查输出并确定速度。

如果您可以触摸代码,则可以添加其他可以通过配置打开和关闭的选项。 既然你已声明你不能改变代码,我想这是一个非选择。

我最近一直致力于性能增强和查看.NET性能工具。 到目前为止,DotTrace似乎是最佳候选者。

特别是, Performance Profiler可以生成跟踪配置文件。 这些配置文件详细说明了每种方法的使用时间

跟踪分析是一种非常准确的分析方法,涉及在输入或离开函数时从CLR获取通知。 这两个通知之间的时间被视为该函数的执行时间。 跟踪性能分析有助于您了解功能级别的精确计时信息和调用次数。

此屏幕截图显示了该工具可以生成的有用统计信息:

在此输入图像描述

通过检查分析数据,您应该能够确切地看到每个层对单个请求花费的时间。

MS Ent Libs中有一个跟踪器,从语法上讲,您使用using语句,并且using语句中发生的所有内容的持续时间都会记录到标准的Ent Lib日志记录生态系统中。

使用(new Tracer()){//这里的代码。 }

有关MSDN的更多基本信息请参阅此处的构造函数 ; 有不同的构造函数,允许您传入不同的标识符,以帮助您跟踪正在记录的内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM