代码之家  ›  专栏  ›  技术社区  ›  Jack Ukleja

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

  •  2
  • Jack Ukleja  · 技术社区  · 15 年前

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

    它是一个带回调的双工协定。在客户机“订阅”之后,服务器上的线程会尽快调用回调。

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

    我需要接近10000。

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

    我可以看什么来改进东西,或者我应该放弃WCF来使用其他技术吗?

    谢谢

    1 回复  |  直到 14 年前
        1
  •  1
  •   mafu    14 年前

    虽然WCF是为高吞吐量和低延迟而设计的,但是您描述的场景却超出了限制。我看到了一些解决方法:

    一种可能的解决方案是将多个数据包组合成一个(如1 List<int> 用10个元素代替10个单一元素 int )这将大大减少小数据包的额外元素(头等)造成的性能损失。

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

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