REST Web服务:同步还是异步?

38

REST Web服务的默认行为是什么- 同步 还是 异步
如果是 同步 的话,我们是否可以创建 异步 服务?

5个回答

66

"同步"或"异步"是请求资源的客户端的行为。它与REST webservice、其结构或支持服务器无关。

同步行为:

  • 客户端构建HTTP结构,通过套接字连接发送。
  • 等待响应HTTP。

异步行为:

  • 客户端构建HTTP结构,发送请求并继续执行其他操作。
  • 另一个线程在套接字上等待响应。一旦响应到达,原始发送方将得到通知(通常使用类似回调的结构)。

13
可以说返回HTTP 202的服务提供了异步服务,而返回HTTP 200/201的服务是同步的。 - Darrel Miller
3
@DarrelMiller 很有见地。一个返回状态码为 202 的服务只是触发/生成另一个进程并立即返回(引用 RFC 中的话)“某种指向状态监视器的指针”。这并不意味着服务器与客户端有持久连接,并在进程完成时通知它。客户端必须轮询这个“指针”,或者可以以异步方式构建库。 (我再次阅读了 RFC 以确保,如果我错了请纠正)。此外,“默认” REST 服务行为仍然不是异步的。 - UltraInstinct
那么我们使用同步协议http来实现REST结构/服务?这难道不会使REST服务变成同步的吗? - prime

5
@Thrustmaster已经解释得很好了。我只想补充一点,使它听起来更简单。
REST Web服务不过是一个HTTP调用。您向URL发送HTTP请求,并获得HTTP响应。如何处理请求和响应取决于调用者。

3

REST服务与同步或异步无关。

客户端: 客户端调用必须支持异步来实现,例如浏览器中的AJAX。

服务器端: 使用多线程环境/非阻塞IO来实现异步服务。


3

1

是的,您可以拥有异步和同步的Web服务。 您可以使用任何框架,如Restlet、JAXB、JAX-RS。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接