我有一个托管接收和发送数据的WCF服务(net.tcp)的应用程序。有没有办法知道自主机启动以来传输了多少数据?
答案 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网络计数器与其他方法进行了比较,发现它们正在为我正在测试的客户端/服务器排队。