代码之家  ›  专栏  ›  技术社区  ›  johnny

当web服务是异步的时,这意味着什么?

  •  21
  • johnny  · 技术社区  · 14 年前

    当web服务是异步的时,这意味着什么?只有在使用Ajax调用它并且页面上有一个在web服务完成时刷新的部分时,才会使用它吗?谢谢您。

    5 回复  |  直到 14 年前
        1
  •  11
  •   John Saunders    14 年前

    问题是,是异步的web服务,还是您对它的访问。在web页面的上下文中,服务更可能是同步的,但它是异步访问的。

    很可能,服务是通过AJAX调用的。呼叫服务,然后页面继续。当响应传入时,将异步执行success或failure函数。

        2
  •  73
  •   Donald    11 年前

    我知道这是一个老话题,但是web服务是同步的还是异步的取决于web服务的设计,而与Ajax无关。异步web服务事务的处理过程如下:

    1. 客户端调用web服务。在调用中,客户端发送一个由客户端作为服务实现的回调端点。
    2. web服务返回一个“消息已接收”回复。 ... (发生一些其他处理) ...
    3. web服务完成其任务,然后调用客户端提供的回调端点。
    4. 客户端回调将答复接收到的消息。

    Developing Asynchronous Web Services How to: Create Asynchronous Web Service Methods

        3
  •  12
  •   Drixson Oseña    9 年前

    同步意味着您调用一个web服务(或函数或其他什么)并等待它返回-所有其他代码执行和用户交互都将停止,直到调用返回。异步意味着您在等待web服务调用返回时不会停止所有其他操作。执行其他代码和/或用户可以继续与页面(或程序UI)交互。

    所以,我不会说web服务本身是异步的,我会说您对服务的ajax调用是异步的。

        4
  •  11
  •   Anssi    8 年前

    当您调用同步web服务时,服务将处理该请求,如果一切按预期进行,则返回HTTP状态代码200ok(1),或者返回错误4xx。呼叫在处理和请求时被阻止,可能需要很长时间。

    当web服务是异步的时,主要的区别是调用应该立即返回并接受HTTP 202(2),这意味着请求进入队列但尚未处理。

    (1)200好 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

        5
  •  4
  •   bn.    14 年前

    异步web服务允许客户端在给定时间后提交请求、处理请求和响应客户端——客户端不会在接收响应时阻止所有活动。

    相比之下,同步的web服务将直接向客户机提供响应,期望客户机在返回响应之前阻止所有活动。在这种情况下,web服务将限制客户端一次处理一个请求。