我在网上通过Soap vs Rest,发现大多数人都说Soap支持异步调用,而Rest没有,但没有得到任何具体的例子。有人可以帮我吗?
这是我所指的资源之一
http://web.archive.org/web/20120421084456/http://www.prescod.net/rest/rest_vs_soap_overview/ http://searchsoa.techtarget.com/tip/REST-vs-SOAP-How-to-choose-the-best-Web-service http://seanmehan.globat.com/blog/2011/06/17/soap-vs-rest/
根据我的理解,两者都应该是同步的。在这两种情况下,客户端通过肥皂或休息来调用Web服务,客户端等待响应从服务返回。那么,如果soap不支持异步行为而休息不支持呢?
答案 0 :(得分:9)
REST纯粹是基于HTTP传输的呼叫,您将收到一个200响应的响应 另一方面,
SOAP使用两个品种,
使用同步消息传递,请求者发出请求,传输层代码块等待来自提供者的响应。请求者在请求者最初建立的用于发送请求的相同HTTP连接上接收响应。同步交换通常更容易实现,并要求提供程序能够在短时间内生成响应,特别是在小于HTTP超时值(通常为120秒)的时间内。 [使用单个HTTP连接本身表现为同步]
使用异步消息传递,一旦请求者被响应者确认,请求者就能够释放传输特定资源,知道最终会收到响应。当提供者完成对消息的处理时,它通过新的HTTP连接将响应发送回请求者。 [这里我们利用两个HTTP连接来实现异步消息传递
答案 1 :(得分:3)
SOAP定义了一种允许异步计算的回复方法,如回调机制。您可以使用REST实现相同的功能,但没有规范,因此您必须自己构建它。
这是展示该功能的example using JAX-WS 2.0。
我在Wikipedia WS-Addressing中找到了有用的信息,其中包含此W3C Specification的链接。
过去我也在SAP ESB设计器中开发,它允许异步服务接口方法。虽然我从未使用过该功能,但该工具完全符合SOAP规范,我很确定它可以像上面的Java示例一样工作,因为WSDL用于生成基于JAX-WS服务器。如果我下周有时间,我会使用该选项,以便看看会发生什么并在此处发布。
您还应该检查this answer,其中涉及此方法的相关方面。
答案 2 :(得分:0)
我创建了一个REST服务,该服务实际上调用了一个异步方法来与数据库层进行交互,并使我们的服务异步。我觉得可以在REST API中实现异步服务。但是在这种情况下,您需要有一个回叫服务,该服务将检查该过程是否按固定间隔完成。