[英]Is it possible to record the time it takes to serialize objects being returned from a web service?
我们正在查看我们正在调用的Web服务的一些性能问题。 我已经设法在整个实际的Web服务方法中放置时间记录代码,但现在看起来好像序列化结果集所需的实际时间可能是一个问题?
所以我希望记录这些数据序列化的时间,但我很难获得任何结果。
这是我们的示例Web服务方法:
[AuthExtension]
[WebMethod]
[SoapHeader("AuthHeader", Direction = SoapHeaderDirection.In)]
public ResultSet CheckAvailability(FareSelections fareSelections)
{
ResultSet results = null;
results = Logic.CheckAvailability(fareSelections, AuthHeader.Token, timeLogger);
return results;
}
我已经尝试过,在返回的类中放置用[OnSerializing()]和[OnSerialized()]属性修饰的方法,但这不起作用。 我也尝试通过使用try..finally块来捕获方法中的时序,但是不要认为这也记录了实际的序列化时间?
有人建议我可能必须实现我自己的序列化程序(它只会记录时间,然后再调用默认的序列化程序),但只是想知道这是否是我唯一的选择?
非常感谢任何想法。
您可以使用自定义SoapExtension 。 在ProcessMessage()方法中,您可以看到4个事件,序列化之前和之后以及反序列化之前和之后。 在Befores中启动秒表,在Afters上结束,然后将时间存储在某个地方。
围绕秒表对象扭曲调用
从记忆里:
Stopwatch sw = Stopwatch.Startnew();
//stuff
sw.Stop();
print sw.ElapsedMilliseconds();
你能不能使用服务跟踪查看器检查每个请求需要多长时间?
您应该使用类似Ants profiler (eval版本会这样做)的内容来分析这些方法。它将为您提供非常好的洞察力。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.