我需要一个连接到WCF服务器的WCF客户端,然后当服务器上的某些数据更改时,客户端需要更新其显示。< / p>
因为客户端和服务器之间可能存在防火墙。
当我正在编写客户端和服务器时,我不需要将解决方案限制为仅使用soap等。
我正在为“long polling”/“Comet”等寻找内置的支持
感谢Drew Marsh提供的关于如何在WCF中实现长轮询的最丰富的答案。但是我认为WCF的主要“卖点”是你可以通过配置在配置文件中使用的通道来做这种事情。 E.g我想要一个逻辑上只有两个但只是物理传入的频道。
答案 0 :(得分:49)
答案 1 :(得分:2)
如果服务器可以与服务总线建立传出连接,则可以进行一种回调。这样,客户端/服务器根本不需要了解彼此,只需依赖服务总线。见.NET Service Bus
您需要查看WSDualHttpBinding
<击>
WSDualHttpBinding提供了
对Web服务协议的相同支持
作为WSHttpBinding,但用于
双工合同。 WSDualHttpBinding
仅支持SOAP安全性和
需要可靠的消息。这个
绑定要求客户端有一个
提供回调的公共URI
服务的端点。这是
由ClientBaseAddress提供。一个
双重绑定暴露了IP地址
客户到服务。客户端
应该使用安全性来确保它
只连接到它信任的服务。
击>
答案 2 :(得分:2)
虽然不是WCF,但您可以尝试使用XMPP来实现该功能。关于它和其他系统的InfoQ有一篇文章。虽然文章指出XMPP不能通过HTTP使用,但您可以在使用BOSH。
时使用有一些.NET库可用agsXMPP来命名。
我工作的公司开始使用它将更新通知推送到应用程序,以刷新部分用户界面。
答案 3 :(得分:1)
Google for“WCF duplex”。我已成功使用netTcpBinding(跨大洲),但我不确定basicHttpBinding。
但是,它确实需要服务器回调客户端。如果不允许服务器执行此操作,则轮询可能是您唯一的选择......
答案 4 :(得分:0)
如果服务器无法调用客户端(通常不应该),则应让客户端按指定的方式轮询服务器。 因为你已经有了WCF基础,所以只需添加一个操作。