В чем разница вызова веб-сервисов с использованием асинхронного вызова и асинхронной задачи
-
06-07-2019 - |
Вопрос
В чем разница между асинхронным вызовом веб-служб и асинхронной задачей.
Мы работаем с приложением ASP.NET, которое требует вызова метода веб-службы, который будет обрабатывать тысячи строк данных. Этот процесс обычно занимает от 2 до 3 минут (может быть, больше, может быть, меньше, это зависит от объема данных). Таким образом, мы все время запускаем в Timeout на этой конкретной странице.
Итак, мы решили пойти по пути асинхронного вызова этого метода веб-службы, но у нас был конфликт, вызванный обработчиком HTTP одного из компонентов пользовательского интерфейса, который мы используем. К счастью, в этом случае мы могли бы удалить страницу из директив httphandler. Р>
Пока проблем нет, но тут возникает вопрос, коллега выясняет, что мы можем использовать вместо вызова асинхронных веб-служб, обернуть синхронный вызов в асинхронной задаче на странице ASP.NET и иметь возможность сохранить директивы к компоненту и выполнить метод веб-службы без получения тайм-аута.
Итак, теперь меня беспокоит то, какие проблемы мы можем найти, используя асинхронные задачи вместо асинхронных вызовов.
Заранее спасибо.
Решение
Кстати, веб-службы не должны использоваться таким образом. Есть причина, по которой таймауты HTTP так малы. Вам нужно, чтобы веб-служба инициировала задачу, либо установив в БД флаг, на котором активируется фактическая служба, либо веб-служба должна запустить процесс.
Другие советы
Если я понимаю ваш сценарий, проблем не должно быть. В обоих случаях ваша страница асинхронна. В обоих случаях вы не ждете завершения службы - вы отказываетесь от потока запросов во время работы службы. В обоих случаях выполнение вашей страницы занимает столько же времени, сколько и при синхронном вызове службы.