代码之家  ›  专栏  ›  技术社区  ›  Kangkan

我可以实现从基于WCF的HTTP服务到GSOAP C/Linux客户机的回调吗?

  •  1
  • Kangkan  · 技术社区  · 15 年前

    我有一个Linux/C客户机应用程序,通过HTTP/SOAP(basichttpbinding)连接到WCF Web服务。我正在使用GSOAP。我可以使用回调实现对Web服务的调用吗?我想在回拨时异步获取数据。

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

    3 回复  |  直到 11 年前
        1
  •  2
  •   jrista    15 年前

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

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

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

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

        2
  •  1
  •   tgeros    15 年前

    basichttpbinding不支持回调。另一种方法可能是使用客户机可以轮询响应的另一种方法。

        3
  •  1
  •   Dragos    11 年前

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

    显然,需要控制上述服务器和客户机的解决方案的两侧。