WCF :检查交换的大小



要做一些WCF基准测试,我需要一种方法来获取交换数据的大小(包括所有标头(甚至TCP)/压缩/...)。

它在一个更大的基准测试中(它也尝试不同的绑定、编码等),所以我需要以编程方式完成,而不是通过像wireshark这样的东西。

有没有钩子

可以做到这一点?

所有通道/绑定/编码器都是以编程方式创建的,以自动执行某些测试。

我找到了一些方法(http://devlicio.us/blogs/derik_whittaker/archive/2011/02/03/how-to-intercept-a-wcf-message-to-track-message-size.aspx),但我不确定它是否适用于非文本数据。或者 http://zamd.net/2008/08/15/calculating-wcf-message-size/但我看不到如何启动它(并且不确定它是否适用于我的自定义编码器

编写 MessageInspector。这将为您提供所有消息的事件。http://msdn.microsoft.com/en-us/library/system.servicemodel.dispatcher.clientruntime.messageinspectors.aspx

您可能能够使用 WMI 性能计数器http://msdn.microsoft.com/en-us/library/ms735098.aspx

您有 2 个选项:

    使用 WCF
  • 扩展性。 这通常需要做更多的工作,并且需要考虑各种 WCF 情况。
  • 使用带外解决方案,如Wireshark

我不确定你为什么喜欢前者 - 我建议尝试 wireshark,我相信它也可以自动化。无论如何,如果你想在 wcf 中执行此操作,你应该实现一个自定义消息编码器来计算网络上的字节大小。这需要是一个通用编码器,将任何其他编码器包装在其中。下面是通用编码器的示例。请注意,编码器方法只会考虑消息大小,而不考虑其上的任何成帧(例如 HTTP 标头)。这就是为什么我认为wireshark更适合您的情况。

相关内容

  • 没有找到相关文章

最新更新