找出WCF主机发送和接收的数据量?

时间:2009-08-19 12:07:59

标签: c# wcf

我有一个托管接收和发送数据的WCF服务(net.tcp)的应用程序。有没有办法知道自主机启动以来传输了多少数据?

6 个答案:

答案 0 :(得分:1)

我会假设您感兴趣的流程实例的性能计数器(perfmon).NET CLR Networking \ Bytes Sent和.NET CLR Networking \ Bytes,虽然我从未直接使用它们,但它们可能会提供您的信息寻找。

答案 1 :(得分:1)

WCF有自己的计数器,它可以帮助您获得所需的信息。

为此你必须启用它们

像这样

<configuration>
    <system.serviceModel>
        <diagnostics performanceCounters="All" /> // use this line.
    </system.serviceModel>
</configuration>

然后每个服务有3种类型的计数器,托管的hwn服务是&amp;运行

ServiceModelEndpoint 3.0.0.0 + ServiceModelOperation 3.0.0.0 + ServiceModelService 3.0.0.0

我认为ServiceModelOperation 3.0.0.0会给你发送/接收的字节。

答案 2 :(得分:0)

我认为可以使用性能计数器,是的。

查看WCF在你的系统中安装的PerfMon中的几十个性能计数器 - 我很确定有一个处理发送和接收的数据....

否则,以编程方式:不,不是没有扩展,我会说。

马克

答案 3 :(得分:0)

我不知道DotNet的内容,但我使用的NetLimiter可以帮助你

答案 4 :(得分:0)

无法通过WCF找出每个服务“开箱即用”传输的总字节数。您需要扩展WCF以捕获此信息。我认为带有IMessageInterceptor的BindingElementExtension会让您达到可以检查流经服务的各个消息的级别。那时你只需要获得消息的大小。

This project允许压缩WCF消息,这意味着它达到了您需要达到的相同低级别。

答案 5 :(得分:0)

我可以确认.NET CLR网络计数器似乎可以正常用于WCF服务。您将无法捕获最初的非托管网络活动,但这将占总时间的一小部分。我已经将这些CLR网络计数器与其他方法进行了比较,发现它们正在为我正在测试的客户端/服务器排队。