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

3

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

6个回答

1

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

为此,您需要启用它们。

像这样:

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

每个服务有3种计数器,只有当服务正在托管和运行时才可见。

ServiceModelEndpoint 3.0.0.0 + ServiceModelOperation 3.0.0.0 + ServiceModelService 3.0.0.0

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


我已经在配置文件中添加了信息,但是在性能监视器实用程序中似乎找不到与发送/接收字节相关的计数器。所有计数器都显示在那里吗?还是有更多可通过编程访问的计数器? - Julien Poulin
另外,您知道即使通信服务在同一台机器上,我是否仍能获取此类信息吗? - Julien Poulin

1
我会假设性能计数器(perfmon).NET CLR Networking\Bytes Sent和.NET CLR Networking\Bytes Received适用于您感兴趣的进程实例,尽管我从未直接使用过它们,但它们可能提供您正在寻找的信息。

0
我可以确认,.NET CLR网络计数器对于WCF服务似乎正常工作。有一段初始的非托管网络活动是无法捕获的,但这只占总量的一小部分。我已将这些CLR网络计数器与其他方法进行了比较,并发现它们在我正在测试的客户端/服务器上完全匹配。

0

我认为应该有一个性能计数器可用,是的。

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

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

Marc


0

我对DotNet不太熟悉,但是我正在使用NetLimiter可能会对你有所帮助。


0

使用WCF“开箱即用”无法找到每个服务传输的总字节数。您需要扩展WCF以捕获此信息。我认为,使用BindingElementExtension和IMessageInterceptor可以使您达到检查通过服务流动的单个消息的级别。在那一点上,您只需要获取消息的大小。

此项目允许压缩WCF消息,这意味着它可以达到您需要达到的相同低级别。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接