要做一些WCF基准测试,我需要有办法获得交换数据的大小(所有标题(甚至TCP)/压缩/...).
这是一个更大的基准测试(也尝试不同的绑定,编码......)所以我需要以编程方式和 NOT 通过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/但我不知道如何启动它(并且不确定它是否适用于我的自定义编码器
答案 0 :(得分: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
答案 1 :(得分:0)
您有两个选择:
我不确定你为什么喜欢前者 - 我建议尝试使用wireshark,我相信它也可以自动化。无论如何你想在wcf中做这个,你应该实现一个自定义的消息编码器来计算线上的字节大小。这需要是一个包含其中任何其他编码器的通用编码器。对于通用编码器,这里是an example。 请注意,编码器方法仅考虑消息大小,但不考虑其上的任何帧(例如HTTP标头)。这就是为什么我认为wireshark对你的情况更好。