使用WCF进行双向通信

Ari*_*edi 10 c# wcf

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

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

Fil*_*lip 9

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

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

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