Как прервать вызов веб-сервиса на стороне клиента и сервера? - PullRequest
0 голосов
/ 19 февраля 2009

Я могу прервать вызов веб-службы от клиента, вызвав метод ABORT прокси-сервера веб-службы.

Однако на сервере, где размещена веб-служба, вызов завершается только после завершения обработки. Поскольку сервер не ожидает каких-либо других входных данных, связанных с уже вызванным веб-методом, при его обработке я не могу закрыть его от клиента.

Можно ли как-нибудь прервать вызов на сервере, то есть остановить большой расчет (и получение некоторых данных с сервера базы данных), на котором работает сервер?

Ответы [ 2 ]

2 голосов
/ 19 февраля 2009

Конечно, нет способа сделать это, если вы используете веб-сервисы ASMX. Возможно, кто-то еще может сказать, возможно ли это с WCF.

Как правило, вам потребуется написать службу, чтобы ожидать прерывания. Большая часть кода службы написана не так.

Ожидаете ли вы часто прерывать запросы? Если нет, то лучше просто ничего не делать на сервере.

1 голос
/ 13 июня 2009

Поскольку вы говорите о простом синхронном запросе-ответе, я не знаю, как бы вы это сделали.

Сколько времени обычно занимает вызов метода?

То поведение, которое вы хотите, действительно звучит так:

  • Запустить последовательность действий, которые что-то делают (обрабатывает некоторые данные), вернуть cookie
  • Когда процесс завершится (опрос / уведомление), извлеките результат, используя cookie
  • Передать инструкции управления, например прервать, используя cookie

Это действительно похоже на моделирование вашей обработки как рабочего процесса, а не вызова функции.

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

...