2010-11-19 30 views

Respuesta

5

La pregunta es si se trata de un servicio web asíncrono o de si tiene acceso a él. En el contexto de una página web, es más probable que el servicio sea sincrónico, pero que se esté accediendo de forma asincrónica.

Lo más probable es que el servicio se llame a través de AJAX. La llamada se realiza al servicio y la página continúa. Cuando entra la respuesta, las funciones de éxito o fracaso se ejecutan de forma asíncrona.

10

Sincrónico significa que usted llama a un servicio web (o función o lo que sea) y espera hasta que regrese - todas las demás ejecuciones de código y la interacción del usuario se detienen hasta que la llamada regrese. Asíncrono significa que no detiene todas las demás operaciones mientras espera que vuelva la llamada del servicio web. Se ejecuta otro código y/o el usuario puede continuar interactuando con la página (o la interfaz de usuario del programa).

Por lo tanto, no diría que el servicio web en sí es asíncrono, yo diría que su llamada ajax al servicio es asincrónica.

+0

propio servicio web sinceramente que está diciendo no es una afirmación correcta no es asíncrona – sowen

1

Un servicio web asincrónico permite que un cliente envíe una solicitud, procese la solicitud y responda al cliente después de un tiempo determinado; el cliente no bloquearía toda actividad al recibir una respuesta.

Comparativamente, un servicio web que es sincrónico proporcionaría directamente a un cliente una respuesta, esperando que el cliente bloquee toda la actividad hasta que se devuelva una respuesta. En este caso, el servicio web limitaría al cliente a procesar las solicitudes de a una por vez.

+0

-1: lo siento, pero si el servicio es sincrónico o no tiene nada para hacer con el cliente. –

+0

Elaborar sobre "nada" que sea una afirmación fuerte. Tal vez tenga algo más que agregar ... dio el "qué" pero no el "por qué". Un servidor sin un cliente no es muy útil; examinar cómo funciona un servicio web por cómo puede y no puede consumirse arroja luz sobre cómo funciona el servicio web en sí. –

55

Sé que este es un tema antiguo, pero si un servicio web es sincrónico o asíncrono depende del diseño del servicio web y no tiene nada que ver con Ajax. Una transacción de servicio web asíncrona procede de la siguiente manera:

  1. El cliente llama al servicio web. En la llamada, el cliente envía un punto final de devolución de llamada implementado como un servicio por el cliente.
  2. El servicio web devuelve una respuesta de "mensaje recibido". ... (se produce algún otro procesamiento) ...
  3. El servicio web completa su tarea, a continuación, llama al punto final de devolución de llamada proporcionada por el cliente.
  4. La devolución de llamada del cliente responde con el mensaje recibido.

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

+7

Esta es la respuesta correcta ... –

+0

Sí, hay un punto importante 2. (solicitud de acuse de recibo recibido) y 3. Punto final CALLBACK, que debe ser especificado por WSDL. ... esto realmente necesita un procesamiento diferente en WS fwk side ... entonces esta respuesta de @Donals es solo correcta –

6

Cuando se llama a servicio web síncrona el servicio procesa la solicitud y devuelve el código de estado HTTP 200 OK (1) si todo ha ido como se esperaba, o 4xx error. La llamada se bloquea durante el procesamiento y la solicitud, y puede tomar un tiempo considerable.

Cuando el servicio web es asincrónico, la principal diferencia es que la llamada debe regresar de forma instantánea con HTTP 202 ACEPTADO (2), lo que significa que la solicitud se toma en cola pero aún no se procesa.

(1) 200 OK http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1
(2) 202 ACEPTADO http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.3

Cuestiones relacionadas