c# - 是否可以记录序列化从 Web 服务返回的对象所花费的时间?

标签 c# web-services performance serialization deserialization

我们正在研究调用的网络服务的一些性能问题。 我已经设法在整个实际的 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 block 来捕获方法中的时间,但不认为这也记录了实际的序列化时间吗?

有人建议我可能必须实现自己的序列化器(它会简单地记录时间,然后无论如何调用默认序列化器),但我只是想知道这是否是我唯一的选择?

非常感谢任何想法。

最佳答案

你可以使用 Custom SoapExtension .在ProcessMessage()方法中,可以看到4个事件,序列化前后和反序列化前后。在 Befores 开始秒表,在 Afters 结束,然后将时间存储在某个地方。

关于c# - 是否可以记录序列化从 Web 服务返回的对象所花费的时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4386974/

相关文章:

java - CXF 网络服务节流

Java 检查 boolean 值是否为空

ruby - 为什么#map 比#each 更有效?

C# 当差异出现在循环中间时如何避免代码重复

C# 添加过滤器到组合框下拉列表

web-services - 使用 JMETER 在击中 WebService 时出现 Soap Fault

c# - Web 引用中断 SSIS 包

c++ - 并发读/写 HashMap 的最快解决方案是什么?

c# - 离线验证增值税号

C# 获取提交表单页面的URL