繁体   English   中英

是否可以记录序列化从Web服务返回的对象所需的时间?

[英]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.

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