我已经设置了一个基本的WCF客户端/服务器,它通过命名管道进行通信。
这是一个带回调的双工合约。在客户端“订阅”之后,服务器上的线程只是尽快调用回调。
问题是我每秒只能获得1000次回调吞吐量。有效载荷只是一个整数!
我需要接近10,000。
一切都基本上以默认设置运行。
我可以通过什么来改进,或者我应该放弃WCF以获得其他技术?
由于
答案 0 :(得分:1)
虽然WCF专为高吞吐量和低延迟而设计,但您所描述的方案正在推动极限。我看到了几种解决方法:
一种可能的解决方案是将多个数据包合并为一个(例如1 List<int>
包含10个元素而不是10个单int
)。这将大大减少小数据包的额外元素(标题等)的性能损失。
另一个想法是使用异步调用,因此延迟不会限制吞吐量。您只需立即发送下一个数据包,而不是等待先前的数据包到达。这也可以使用OneWayCommunication标志来实现。
显然,底层数据流格式(命名为pipe,tcp等)对速度以及物理通道(以太网等)都有影响。据我所知,tcp是通过网络进行通信的最快方式之一,在本地计算机上仍然非常快。