【发布时间】:2016-05-04 15:32:26
【问题描述】:
Web 服务是异步的是什么意思?仅当您使用 Ajax 调用它并且您的页面上有一个部分在 Web 服务完成时刷新时才使用它?谢谢。
【问题讨论】:
Web 服务是异步的是什么意思?仅当您使用 Ajax 调用它并且您的页面上有一个部分在 Web 服务完成时刷新时才使用它?谢谢。
【问题讨论】:
我知道这是一个老话题,但是 Web 服务是同步还是异步取决于 Web 服务的设计,与 Ajax 无关。异步 Web 服务事务处理如下:
见Developing Asynchronous Web Services或How to: Create Asynchronous Web Service Methods
【讨论】:
问题是网络服务是异步的,还是您对它的访问。在网页的上下文中,服务更有可能是同步的,但它被异步访问。
很可能,服务是通过 AJAX 调用的。调用服务,然后页面继续。当响应到来时,成功或失败函数都会异步执行。
【讨论】:
同步意味着您调用 Web 服务(或函数或其他)并等待它返回 - 所有其他代码执行和用户交互都会停止,直到调用返回。异步意味着您在等待 Web 服务调用返回时不会停止所有其他操作。执行其他代码和/或用户可以继续与页面(或程序 UI)交互。
所以,我不会说 Web 服务本身是异步的,我会说您对服务的 ajax 调用是异步的。
【讨论】:
当您调用同步 Web 服务时,服务会处理请求并返回 HTTP 状态代码 200 OK (1) 如果一切都按预期进行,或者错误 4xx。处理请求时调用被阻塞,可能需要很长时间。
当 Web 服务是异步的时,主要区别在于调用应该立即返回 HTTP 202 ACCEPTED (2),这意味着请求已在队列中但尚未处理。
(1) 200 OK http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1
(2) 202 接受http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.3
【讨论】:
异步 Web 服务允许客户端提交请求、处理请求并在给定时间后响应客户端——客户端不会在接收响应时阻止所有活动。
相比之下,同步的 Web 服务将直接向客户端提供响应,期望客户端阻止所有活动,直到返回响应。在这种情况下,Web 服务将限制客户端一次处理一个请求。
【讨论】: