web-dev-qa-db-fra.com

Qu'est-ce que cela signifie lorsqu'un service Web est asynchrone?

Qu'est-ce que cela signifie lorsqu'un service Web est asynchrone? Est-ce uniquement utilisé lorsque vous l'appelez avec Ajax et que vous avez une partie sur votre page qui s'actualise lorsque le service Web est terminé? Je vous remercie.

23
johnny

La question est de savoir si c'est le service Web qui est asynchrone ou votre accès à celui-ci. Dans le contexte d'une page Web, il est plus probable que le service soit synchrone, mais qu'il soit accessible de manière asynchrone.

Très probablement, le service est appelé via AJAX. L'appel est effectué vers le service, puis la page continue. Lorsque la réponse arrive, les fonctions de réussite ou d'échec sont exécutées de manière asynchrone.

10
John Saunders

Je sais que c'est un vieux sujet, mais le fait qu'un service Web soit synchrone ou asynchrone dépend de la conception du service Web et n'a rien à voir avec Ajax. Une transaction de service Web asynchrone se déroule comme suit:

  1. Le client appelle le service Web. Dans l'appel, le client envoie un point de terminaison de rappel implémenté en tant que service par le client.
  2. Le service Web renvoie une réponse "message reçu". ... (Un autre traitement a lieu) ...
  3. Le service Web termine sa tâche, puis appelle le point de terminaison de rappel fourni par le client.
  4. Le rappel client répond avec le message reçu.

Voir Développement de services Web asynchrones ou Comment: créer des méthodes de service Web asynchrones

71
Donald

Synchrone signifie que vous appelez un service Web (ou une fonction ou autre) et attendez qu'il revienne - toute autre exécution de code et interaction utilisateur est arrêtée jusqu'à ce que l'appel revienne. Asynchrone signifie que vous n'interrompez pas toutes les autres opérations en attendant le retour de l'appel du service Web. Un autre code s'exécute et/ou l'utilisateur peut continuer à interagir avec la page (ou l'interface utilisateur du programme).

Donc, je ne dirais pas que le service Web lui-même est asynchrone, je dirais que votre appel ajax au service est asynchrone.

12
Ray

Lorsque vous appelez un service Web synchrone, le service traite la demande et renvoie le code d'état HTTP 200 OK (1) si tout s'est déroulé comme prévu, ou erreur 4xx. L'appel est bloqué pendant le traitement et la demande et peut prendre un temps considérable.

Lorsque le service Web est asynchrone, la principale différence est que l'appel doit retourner instantanément avec HTTP 202 ACCEPTED (2), ce qui signifie que la demande est prise en file d'attente mais pas encore traitée.

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

10
Anssi

Un service Web asynchrone permet à un client de soumettre une demande, de traiter la demande et de répondre au client après un certain temps - le client ne bloquerait pas toute activité lors de la réception d'une réponse.

Comparativement, un service Web synchrone fournirait directement au client une réponse, s'attendant à ce que le client bloque toutes les activités jusqu'à ce qu'une réponse soit renvoyée. Dans ce cas, le service Web limiterait le client à traiter les demandes une par une.

4
bn.