1

我有一个 Linux/c 客户端应用程序,它通过 HTTP/SOAP (BasicHTTPBinding) 连接到 WCF Web 服务。我正在使用 gSOAP。我可以使用回调实现对 Web 服务的调用吗?我想异步获取数据作为回调。

更新:我已经更新了问题标题。

4

3 回答 3

2

WCF 确实支持双工服务,或者那些能够回调请求客户端的服务。双工服务可能非常复杂,因为它们不仅是有状态的,而且它们对客户提出了合同实施要求。

双工服务需要使用 WSDuplexHttpBinding。您将需要使用 OperationContext 来获取对回调通道的引用。您的客户端必须在某个类中实现回调协定,并向客户端代理提供包含回调类实例的 InstanceContext。必须支持双向通信,如果客户端位于其自己的防火墙后面或跨互联网,这可能是一个需要解决的复杂问题。编写双工服务时要小心……它们通常比它们的价值更麻烦……所以确保你真的需要它。;-)

以下页面可能会有所帮助:

http://msdn.microsoft.com/en-us/library/ms731064.aspx

于 2010-02-25T03:19:16.327 回答
1

basicHttpBinding 不支持回调。另一种方法可能是让客户端可以轮询响应的另一种方法。

于 2010-02-25T03:10:30.157 回答
1

我面临同样的问题,我正在尝试的方法是拥有一对 gsoap 服务器/客户端。基本上每个进程都会在一个端口上侦听soap调用并将其客户端调用到另一个服务器。这样我就避免了轮询或其他复杂的方法。对于实现的任何业务逻辑,代码显然必须是线程安全的,但客户端/服务器组合对是我迄今为止想到的最简单的解决方案。

显然,需要控制所提到的服务器和所提到的客户端的解决方案的双方。

于 2013-10-02T17:32:59.417 回答