【问题标题】:Does WSDL have the concept of an asynchronous web method?WSDL 有异步 Web 方法的概念吗?
【发布时间】:2016-09-16 09:37:06
【问题描述】:

我正在 WCF 4.6.1 中编写 API。客户端不会由我编写,也不一定使用 .NET(它们可以使用任何语言/平台)。

有一个 web 方法可能需要很长时间,所以我想鼓励客户端异步调用它。我知道可以编写客户端以将 Web 方法视为异步(线程等),但是有没有办法将实际的 Web 服务“强制”为异步操作?即 WSDL 是否有办法说“这是一个异步方法”?

【问题讨论】:

    标签: web-services asynchronous wsdl


    【解决方案1】:

    WSDL 是否有办法说“这是一个异步方法”?

    不,它没有。即使客户端线程在调用发生时没有阻塞,客户端和服务之间的通信也是同步的。也就是说调用是异步的,而不是Web服务方法是异步的。

    如果您提供良好的文档说明对于特定操作,建议使用单独的线程,因为生成响应速度很慢,您应该没问题。需要构建客户端并测试与 Web 服务的集成。开发人员会注意到响应缓慢,他们将决定是否需要以非阻塞方式进行调用。即使阻塞也可能是他们的解决方案,你永远不知道,你认为慢的其他可能没有问题。

    如果您想“强制”客户端不阻止响应,您可以使用例如 WS-Addressing(我在这里假设您将 WCF 用于 SOAP Web 服务),其中您的客户端提供了一个回调端点您可以在响应准备好时调用。这使客户端有点复杂,因为它现在需要一个接收端点。但是客户端开发人员可能更愿意选择她调用服务的方式(以阻塞/非阻塞方式),而不是必须实现 WS-Addressing 规范。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-27
      • 1970-01-01
      • 1970-01-01
      • 2012-12-07
      • 1970-01-01
      • 2017-06-11
      相关资源
      最近更新 更多