发布订阅场景下如何实现WCF服务器的低延迟?具体来说,客户端订阅数据并接收更新,有问题的延迟是在数据更改和客户端接收更改之间?CPU、内存、带宽要求并不重要,可能很高。
基础很明显:二进制序列化、命名管道等。但是,例如,通过始终连接的流发送数据是否有意义?或者将批量更新作为单个消息发送以减少 RPC/标头开销?
可能有一些带有代码或接口的项目可用作示例吗?
发布订阅场景下如何实现WCF服务器的低延迟?具体来说,客户端订阅数据并接收更新,有问题的延迟是在数据更改和客户端接收更改之间?CPU、内存、带宽要求并不重要,可能很高。
基础很明显:二进制序列化、命名管道等。但是,例如,通过始终连接的流发送数据是否有意义?或者将批量更新作为单个消息发送以减少 RPC/标头开销?
可能有一些带有代码或接口的项目可用作示例吗?
如果您使用双工通道,您可以让客户端连接到服务器,并在此过程中将另一个服务合同作为回调传递。然后,服务器使用此回调将更新发送到客户端,因为它们变得可用。
我已经使用这种方法编写了一个内部发布-订阅机制,并且延迟大约与您通过 WCF 所期望的一样低。
你的目标表现是什么?
这篇 MSDN 文章讨论了使用 WCF 双工通道。
不是一个全面的解决方案,但是:为了减少与数据大小和网络传输速度相关的延迟,您可以使用google 协议缓冲区通过网络压缩您的数据。GitHub 项目在这里。
你有没有看过
http://geekswithblogs.net/BVeldhoen/archive/2008/01/26/wcf-latency-test-harness.aspx
它考虑了各种绑定和数据大小。