使用WCF进行双向通信

我正在设计一个使用Windows Communication Foundation实现的客户端 – 服务器体系结构。 在其中一个用例中,服务器需要请求客户端的状态,这意味着它需要在客户端上调用SendStatus()方法并询问其状态。 我只是想知道这个用例是否可以使用WCF实现,而无需在客户端创建独立服务。 我正在尝试避免套接字,因为客户端是后台服务,并且基本上始终连接到服务器。 我知道WCF最终使用套接字进行通信,但我特意尝试使用WCF,因为这更像是一个概念validation。

我想到的一种解决方法是客户端可以调用服务器上的SendClientStatus()方法并每隔5秒左右发送一次状态。 但是,这似乎不是一个好方法。 任何帮助,将不胜感激。

在WCF的世界中,您或多或少有两种选择。

A) 具有双Http绑定的双工服务

B)无返回值的轮询方案 – 这基本上就是你所描述的。 正如您所正确指出的那样,天真的实现并不是那么好,但有优化。 由于您不需要从SendClientStatus返回任何内容(正确吗?),您可以通过仅在有更新时发送更新来优化通信 – 例如,只要客户端的状态保持不变,就不会向服务器发送任何内容。 根据客户端状态更改的频率,这可以大大减少流量。 除非您确实需要,否则双工服务会提供您想要避免的额外配置。