如何使用WCF双工通道实现最大回调吞吐量

时间:2010-04-03 03:37:38

标签: .net wcf performance

我已经设置了一个基本的WCF客户端/服务器,它通过命名管道进行通信。

这是一个带回调的双工合约。在客户端“订阅”之后,服务器上的线程只是尽快调用回调。

问题是我每秒只能获得1000次回调吞吐量。有效载荷只是一个整数!

我需要接近10,000。

一切都基本上以默认设置运行。

我可以通过什么来改进,或者我应该放弃WCF以获得其他技术?

由于

1 个答案:

答案 0 :(得分:1)

虽然WCF专为高吞吐量和低延迟而设计,但您所描述的方案正在推动极限。我看到了几种解决方法:

一种可能的解决方案是将多个数据包合并为一个(例如1 List<int>包含10个元素而不是10个单int)。这将大大减少小数据包的额外元素(标题等)的性能损失。

另一个想法是使用异步调用,因此延迟不会限制吞吐量。您只需立即发送下一个数据包,而不是等待先前的数据包到达。这也可以使用OneWayCommunication标志来实现。

显然,底层数据流格式(命名为pipe,tcp等)对速度以及物理通道(以太网等)都有影响。据我所知,tcp是通过网络进行通信的最快方式之一,在本地计算机上仍然非常快。