В качестве общего предложения я бы порекомендовал автономную службу Windows, консольное приложение или аналогичное приложение с очень тщательным контролем жизненного цикла и ведением журнала, который будет постоянно работать и проверять (опрашивать) «задания для обработки» в базе данных, а затем обновлять базу с результатами и информацией о прогрессе.
Возможно, это не самый лучший способ, но я использовал его много раз, он надежен, масштабируем и имеет хорошую производительность.
Лучше всего сохранять веб-запросы до одной-двух минут максимум - они никогда не были рассчитаны на большие сроки обработки. Таким образом, вы можете «проверять» статус задания каждую минуту или около того (используя веб-сервис).
Если у вас есть какие-либо вопросы обо мне или об этой идее, пожалуйста, оставьте комментарий, и я буду рад помочь, уточнить или предложить.
Надеюсь, это поможет!
(Дополнительно: я считаю, что службы Windows используются недостаточно! Все, что требуется, - это быстрый базовый класс или набор вспомогательных методов многократного использования, и у вас есть зарегистрированный, надежный, автоматический, настраиваемый, быстро реализуемый процесс, работающий под вашим управление. Быстрое создание прототипа!)