我正在设计一个使用Windows Communication Foundation实现的客户端 - 服务器架构。在其中一个用例中,服务器需要请求客户端的状态,这意味着它需要在客户端上调用SendStatus()
方法并询问其状态。我只是想知道这个用例是否可以使用WCF实现,而无需在客户端创建独立服务。我正在尝试避免套接字,因为客户端是后台服务,并且基本上始终连接到服务器。我知道WCF最终使用套接字进行通信,但我特意尝试使用WCF,因为这更像是一个概念证明。
我想到的一种解决方法是客户端可以调用服务器上的SendClientStatus()
方法,并每隔5秒左右发送一次状态。但是,这似乎不是一个好方法。任何帮助将不胜感激。
答案 0 :(得分:9)
在WCF世界中,您或多或少有两种选择。
A)A Duplex service with Dual Http Binding
B)无回报价值的民意调查方案 - 这基本上就是你所描述的。正如您所正确指出的那样,天真的实现并不是那么好,但有优化。由于您不需要从SendClientStatus返回任何内容(正确吗?),您可以通过仅在有更新时发送更新来优化通信 - 例如只要客户端的状态保持不变,就不会向服务器发送任何内容。根据客户端状态更改的频率,这可以大大减少流量。除非您确实需要,否则双工服务会提供您想要避免的额外配置。