В чем разница вызова веб-сервисов с использованием асинхронного вызова и асинхронной задачи

StackOverflow https://stackoverflow.com/questions/1028018

Вопрос

В чем разница между асинхронным вызовом веб-служб и асинхронной задачей.

Мы работаем с приложением ASP.NET, которое требует вызова метода веб-службы, который будет обрабатывать тысячи строк данных. Этот процесс обычно занимает от 2 до 3 минут (может быть, больше, может быть, меньше, это зависит от объема данных). Таким образом, мы все время запускаем в Timeout на этой конкретной странице.

Итак, мы решили пойти по пути асинхронного вызова этого метода веб-службы, но у нас был конфликт, вызванный обработчиком HTTP одного из компонентов пользовательского интерфейса, который мы используем. К счастью, в этом случае мы могли бы удалить страницу из директив httphandler.

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

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

Заранее спасибо.

Это было полезно?

Решение

Кстати, веб-службы не должны использоваться таким образом. Есть причина, по которой таймауты HTTP так малы. Вам нужно, чтобы веб-служба инициировала задачу, либо установив в БД флаг, на котором активируется фактическая служба, либо веб-служба должна запустить процесс.

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top