4

要进行一些 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/但我不知道如何启动它(并且不确定它是否适用于我的自定义编码器

4

2 回答 2

2

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

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

于 2012-06-19T13:43:06.053 回答
0

您有 2 个选项:

  • 使用 WCF 可扩展性。这通常需要更多的工作,并且您需要考虑各种 wcf 情况。
  • 使用像wireshark这样的带外解决方案

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

于 2012-06-19T13:40:16.213 回答