Что это означает, когда веб-сервис асинхронный? - PullRequest
22 голосов
/ 19 ноября 2010

Что это значит, когда веб-сервис асинхронный?Используется ли это только тогда, когда вы вызываете его с помощью Ajax, и у вас есть часть на странице, которая обновляется после завершения работы веб-службы?Спасибо.

Ответы [ 5 ]

71 голосов
/ 15 июля 2013

Я знаю, что это старая тема, но является ли веб-сервис синхронным или асинхронным, зависит от дизайна веб-сервиса и не имеет никакого отношения к Ajax.Асинхронная транзакция веб-службы происходит следующим образом:

  1. Клиент вызывает веб-службу.При вызове клиент отправляет конечную точку обратного вызова, реализованную клиентом как услуга.
  2. Веб-служба возвращает ответ «сообщение получено».... (происходит некоторая другая обработка) ...
  3. Веб-служба завершает свою задачу, а затем вызывает конечную точку обратного вызова, предоставленную клиентом.
  4. Обратный вызов клиентаответы с полученным сообщением.

См. Разработка асинхронных веб-служб или Как создать методы асинхронной веб-службы

12 голосов
/ 19 ноября 2010

Синхронный означает, что вы вызываете веб-сервис (или функцию, или что-то еще) и ждете, пока он не вернется - выполнение всего остального кода и взаимодействие с пользователем прекращается до тех пор, пока вызов не вернется.Асинхронный означает, что вы не останавливаете все другие операции, ожидая возврата вызова веб-службы.Другой код выполняется, и / или пользователь может продолжать взаимодействовать со страницей (или пользовательским интерфейсом программы).

Итак, я бы не сказал, что сам веб-сервис является асинхронным, я бы сказал, что ваш ajax-вызовслужба асинхронная.

10 голосов
/ 20 июля 2014

Когда вы вызываете синхронный веб-сервис, сервис обрабатывает запрос и возвращает HTTP-код состояния 200 OK (1), если все прошло как ожидалось, или ошибка 4xx.Вызов блокируется во время обработки и запроса и может занимать значительное время.

Когда веб-служба асинхронна, основное отличие состоит в том, что вызов должен мгновенно возвращаться с HTTP 202 ACCEPTED (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

10 голосов
/ 19 ноября 2010

Вопрос в том, является ли веб-сервис асинхронным или ваш доступ к нему. В контексте веб-страницы более вероятно, что служба является синхронной, но к ней обращаются асинхронно.

Скорее всего, сервис вызывается через AJAX. Вызов в службу, и страница затем продолжается. Когда приходит ответ, асинхронно выполняются либо функции успеха, либо ошибки.

4 голосов
/ 19 ноября 2010

Асинхронный веб-сервис позволяет клиенту отправлять запрос, обрабатывать запрос и отвечать клиенту через определенный промежуток времени - клиент не будет блокировать всю активность при получении ответа.

Для сравнения,синхронный веб-сервис будет предоставлять клиенту ответ напрямую, ожидая, что клиент заблокирует всю активность, пока ответ не будет возвращен.В этом случае веб-служба будет ограничивать клиент для обработки запросов по одному.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...