到目前为止,除了可以从双通道获得的即时通知之外,没有人可以真正提供在客户端轮询系统上使用双通道的任何好处。每一点都说如果你不需要立即通知双重约束提供负值 - 任何人都不同意这个?
对IIS托管服务使用WSDualHttpBinding与调用WCF服务的客户端轮询有多大好处,假设后者服务缓存了相关数据?
此场景将用于通知类型的服务,其中客户端需要在事件发生时通知客户。
具体来说,WSDualHttpBinding在轮询方面有哪些优势? 即:减少网络流量,设计更快,更易于维护,更多控制???
据我所知,WSDualHttpBinding的可扩展性低于客户端轮询,所以为什么要使用它呢?编辑:正如Matt提供的那样,时间关键可能是双面绑定的一个原因。
这是我到目前为止所拥有的:
WSDualHttpBinding
adv:可以立即得到响应,无需等待轮询计时器
dis:可扩展性低于WsHttpBinding
dis:防火墙不太友好
dis:比WSHttpBinding慢
我会根据评论添加此内容,如果我说错了,请告诉我。
感谢您输入: - )
答案 0 :(得分:9)
this SO thread中有大量信息。基本上,轮询的缺点是您的客户端仅与其上次轮询一样是最新的,因此对于时间关键信息,您需要增加轮询的频率。每次轮询都会占用网络资源并在客户端上产生开销。长轮询和WSDualHttpBinding等解决方案是解决该问题的方法。 WSDualHttpBinding的缺点是客户端必须将端点暴露给服务器(这会在防火墙环境中产生问题)。 BOSH / XMPP或其他形式的长期民意调查是另一种选择。
答案 1 :(得分:5)
创建WSDualHttpBinding是有原因的。 WCF提供了对服务“回调”的支持 - 客户端在服务执行完成时收到通知的方法。不幸的是,HTTP - 作为单向通道 - 不允许回调(相反,TCPBinding允许它,因为TCP是全双工通道)。 为了解决HTTP的单向性问题,发明了DualHttpBinding--两个同时打开的HTTP连接 - 一个用于服务请求 - 一个用于回调。 这不是可扩展性的问题 - 而是需求。如果你想使用回调(并且回调很好,特别是如果你的服务将是一个耗时(长时间运行)服务),WSDualHttpBinding可能是你最好的选择。由于已经指出的原因,轮询可能是最糟糕的 - 每次轮询都会占用网络资源等。