Soap如何支持异步调用而Rest不支持?

问题描述 投票:6回答:3

我在网上通过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支持异步行为而休息不支持呢?

java web-services rest soap
3个回答
9
投票

REST纯粹是一个基于HTTP传输的呼叫,你会在另一边收到200 OK的响应,

SOAP使用两个品种,

  • HTTP上的同步消息传递
  • HTTP上的异步消息传递

通过同步消息传递,请求者发出请求,传输层代码块等待来自提供者的响应。请求者在请求者最初建立的用于发送请求的相同HTTP连接上接收响应。同步交换通常更容易实现,并要求提供程序能够在短时间内生成响应,特别是在小于HTTP超时值(通常为120秒)的时间内。 [使用单个HTTP连接本身表现为同步]

通过异步消息传递,请求者能够在响应者确认请求后释放传输特定资源,并知道最终将收到响应。当提供者完成对消息的处理时,它通过新的HTTP连接将响应发送回请求者。 [这里我们利用两个HTTP连接来实现异步消息传递

  • 第一个HTTP连接用于发送请求和接收确认HTTP响应200 / OK
  • 第二个HTTP连接用于接收回调和响应HTTP响应200 / OK]

Rijoy https://soascribbles.wordpress.com/


4
投票

SOAP定义了一种允许异步计算的回复方法,如回调机制。您可以使用REST实现相同的功能,但没有规范,因此您必须自己构建它。

这是一个展示该功能的example using JAX-WS 2.0

我在Wikipedia WS-Addressing中找到了有用的信息,其中包含此W3C Specification的链接。

在过去,我还在SAP ESB设计器中开发,它允许异步服务接口方法。虽然我从未使用过该功能,但该工具完全符合SOAP规范,我很确定它可以像上面的Java示例一样工作,因为WSDL用于生成基于JAX-WS服务器。如果我下周有时间,我将使用该选项,以便查看会发生什么并在此处发布。

您还应该检查this answer,它解决了这种方法的相关方面。


0
投票

我创建了一个REST服务,它实际上调用异步方法与DB层交互并使我们的服务异步。我觉得可以在REST API中实现异步服务。但在这种情况下,您需要有一个回叫服务,它将检查该过程是否已定期完成。

© www.soinside.com 2019 - 2024. All rights reserved.