2010-04-26 112 views
0

我有很多客户端程序和一个服务。 此客户端程序使用带WCF的http通道与服务器进行通信。wcf和双工通信

客户端拥有动态IP。 他们每天24小时在线。

我需要以下内容: 服务器应在3分钟内通知所有客户端。如果客户是新的(现在开始),应该立即通知它。

但是因为客户端有动态IP,他们每天工作24小时,有时连接不稳定,使用wcf双工是不是个好主意?

当连接断开时会发生什么?它会自动恢复?

将远程MSMQ用于此类通知是个好主意吗?

问候,

回答

0

当连接断开时,回调将引发异常并关闭通道。

我不确定MSMQ会为您工作,除非每个客户端都会为您创建一个MSMQ队列,并将消息推送给他们中的每一个。再次与不可靠的连接,这将无济于事。如果你失去与客户端的连接,客户端脱机或更改IP而不通知系统,我认为你不能“推送”数据。

1

WCF双工非常耗资源,每个拇指规则,你不应该使用超过10个。有很多的开销涉及双向通道。也没有自动恢复。

如果您知道3分钟的时间间隔,并且您希望客户端在启动时获取信息,为什么不让客户端从服务器轮询信息?

+0

在这一刻,客户端将信息从服务器中进行汇集。但我正在寻找更好的解决方案。有时客户端询问时服务器中的信息还没有准备好,因此客户端需要执行多个请求,并且由于大量的客户端可能会在服务器上产生不必要的过载。这就是我寻求推动技术的原因。当服务器准备就绪时,它会将信息推送给所有客户端。我发现MSMQ可以将信息推送到远程客户端。我不确定自动恢复和安全性,当然还有关于过载和可能出现的问题。 – darpet 2010-04-27 09:05:02

+0

为了使用回调将数据推送到客户端,必须至少在服务器上注册一次,因为您不知道客户端IP。当客户端IP更改或客户端启动时,您还可以将每个客户端IP存储在服务器的列表中。然后,您可以使用此列表与客户端联系,而无需使用回叫。但是这需要从服务器到客户端的直接连接或在客户端位于防火墙后面的情况下进行端口转发。 – flayn 2010-04-27 09:55:06