推送或轮询

Jay*_*esh 5 .net c# silverlight wcf

我有一个SL客户端和WCF服务。客户端每4秒轮询一次WCF,我一次有近100个客户端。

Web服务器是具有512 MB RAM的入门级服务器。

我想知道,如果轮询取决于服务器配置,那么如果增加服务器配置,客户端的轮询会更好地工作吗?

其次,推动(双工)是否比轮询更好?我一直在阅读的博客有一些不同的回答。

此外,优化轮询以更快地响应客户端的最佳实践是什么?我的应用程序需要实时数据

谢谢

Kei*_*one 3

我的猜测是,您有某种竞争条件,只有大量客户才会出现。您的 WCF 服务使用什么并发和实例模式?(请参阅 MSDN:WCF 会话、实例化和并发,网址为http://msdn.microsoft.com/en-us/library/ms731193.aspx

如果您“丢失”响应,我要做的第一件事就是开始记录或跟踪服务器上发生的情况。例如,当客户端“看不到”响应时,服务器是否收到了请求?(如果是这样,会发生什么,等等)

我还会密切关注内存使用情况——你不会说你正在使用什么操作系统,但现在 512 MB 实在是太少了。如果您遇到交换到磁盘的情况,这显然不是一件好事。

最后,假设您的服务受 CPU 限制(即没有繁重的数据库和文件系统调用),提高吞吐量的最佳方法可能是减少消息负载(线路大小),使用性能最高的绑定(即,如果客户端是 . NET 并且您可以控制它,NetTcp 绑定比 HTTP 快得多),当然还有多线程您的服务。恕我直言,根据您提供的信息 - 在所有其他条件相同的情况下 - 轮询可能没问题,而推送可能只会使事情变得更加复杂。如果它很重要,您确实希望采用真正的工程方法来解决问题并识别/测量您的瓶颈。

希望这可以帮助!