我们希望跟踪客户端和服务器之间的Web服务调用所花费的时间。此时间不应包括服务器处理请求所花费的时间。 我们的想法是,我们希望看到由于通过网络进行实际传输而导致Web服务调用丢失的时间。
WCF是否已经朝这个方向提供了一些东西?
当然我可以在客户端添加一个计时器并减去服务器处理时间,但这不会很优雅。
答案 0 :(得分:3)
WCF有很多性能计数器 - 请参阅MSDN docs on this topic或查看How to use WCF Performance Counters以获取有关如何使用这些计数器的用户报告。
另一种选择是启用WCF tracing - 您将获得有关邮件如何通过系统传输的详细报告,包括时间戳。基于这些位,你应该能够确定在网络上花费的时间等。有一个非常好的WCF Trace Viewer工具,可以让你很容易地检查这些跟踪文件。
另一种选择是使用标题,例如DateTime字段:在发送消息时在客户端添加第一个头(“ClientOut”),并在服务器上添加更多(例如“ServerIn”,“ServerOut”),然后再在客户端添加最后一个( “ClientBackIn”)。如果您记录实际日期/时间,您应该能够查看这些标题,并查看有关客户端和服务器之间的行程花费的时间的一些信息。您可以为WCF创建一个Message Inspector扩展来执行类似的操作。
答案 1 :(得分:0)