WCF实现双向通信

10

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

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


4
这被称为双工通信。MSDN文章 - J0HN
1个回答

9
在WCF的世界中,你大致有两个选择。
A) 双向Http绑定的双工服务 B) 无返回值的轮询方案 - 这基本上就是你所描述的。正如你正确地指出的那样,天真的实现并不是很好,但有优化方法。由于你不需要从SendClientStatus返回任何内容(对吗?),你可以通过仅在有更新时发送更新来优化通信 - 例如只要客户端状态保持不变,就不会向服务器发送任何内容。根据客户端状态更改的频率,这可以大大减少流量。双工服务提供了一些额外的配置,除非你真的需要它们,否则应该避免使用它们。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接