2016-09-16 95 views
1

我在WCF 4.6.1中编写了一个API。客户端不会被我写,并且不一定会在.NET中(他们可能在任何语言/平台上)。WSDL是否具有异步Web方法的概念?

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

回答

1

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

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

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

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