测量 Fiddler 和 C# 应用程序中的 WCF 服务调用响应时间

本文关键字:WCF 服务 调用 响应时间 Fiddler 应用程序 测量 | 更新日期: 2023-09-27 18:33:23

我正在寻找在 Fiddler 中测量服务调用响应时间的方法,因此它包括流程的所有阶段(创建请求、将其序列化为 xml、发送、获取响应、反序列化)。喜欢这个:

var start = DateTime.Now;
// client is auto-generated C# SoapHttpClientProtocol proxy for WCF service
var response = client.GetWebMethod();
var finish = DateTime.Now;
var elapsed = (finish - start).TotalMilliseconds;

文档建议使用 ClientDoneRequest 和 ClientDoneResponse 计时器之间的差异:

var elapsed = (oSession.Timers.ClientDoneResponse - Session.Timers.ClientDoneRequest).TotalMilliseconds;

结果我得到的差异约为 100%,而 Fiddler 的值出人意料地小了两倍(反之亦然,因为它是代理,必须有一些开销来传递请求)。
这更像是我在这里寻找 ClientDoneResponse - Client*Begin*Request,但这两个计时器(ClientStartRequest 和 ClientDoneRequest)的值在我的情况下是绝对相等的。任何想法如何在小提琴手中获得至少近似接近的数字?提前谢谢。
编辑
尝试过ClientBeginRequest,它根本不起作用。

测量 Fiddler 和 C# 应用程序中的 WCF 服务调用响应时间

在您的代码中,您使用的是 DateTime.Now ,它仅限于 Windows 时钟分辨率 (15.7ms)。为了获得更高的精度,应改用 Stopwatch 类。

我对你试图用提琴手的计时器测量什么还不够了解。 ClientDoneResponse - ClientBeginRequest测量客户端向 Fiddler 发送第一个 TCP/IP 数据包与 Fiddler 将最后一个 TCP/IP 数据包发送到客户端之间的时间。