Поддерживает ли SOAP отмену вызова? - PullRequest
2 голосов
/ 04 февраля 2010

При использовании протокола SOAP возможно ли отменить ожидающий удаленный вызов функции с использованием SOAP?

Я вижу три разные ситуации:

  • А) Оформление запроса на услугу, выполнение которой занимает много времени. Например, можно ли отменить цикл копирования файла при копировании каталога, содержащего много файлов?

  • B) Создание запроса, который возвращает длинный список. Например, при запросе большого списка имен пользователей в памяти можно ли отменить передачу этого списка-ответа?

  • C) Отмена вызова, который все еще находится во внутренней очереди вызовов; другими словами, до того, как сервер начал его обрабатывать. Это может произойти при выполнении большого количества асинхронных вызовов за короткое время.

1 Ответ

3 голосов
/ 05 февраля 2010

С точки зрения клиента, отмена синхронного (запрос-ответ) SOAP-вызова такая же, как и для любого другого HTTP-вызова - просто отключите и прекратите прослушивание ответа. Хорошо написанный сервер проверит, все еще ли клиент подключен, прежде чем приступить к длительным операциям (например, в .NET сервер проверит IsClientConnected ) и должен отменить операцию, если нет.

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

...