Я работаю над приложением asp.net mvc, у которого есть одно из следующих требований:
Сценарий: пользователь отправляет запрос на обработку долго выполняющейся задачи. Задача должна быть инициирована на стороне сервера. И, не дожидаясь завершения задачи, пользователю необходимо отправить ответ о том, что после выполнения задачи он получит уведомление по электронной почте.
Это похоже на сценарий асинхронной обработки. Первоначально я думал об использовании асинхронных делегатов, но узнал, что асинхронный делегат будет работать в качестве фонового потока и не останется в живых, если основной поток завершится. Для меня кажется, что как только ответ отправляется пользователю, основной поток завершается и так в качестве фоновой темы. Поправь меня, если я ошибаюсь.
Итак, я подумал о создании потока переднего плана с использованием класса Thread. Но в одной из статей, которые я прочитал, упоминается, что asp.net не будет проверять, является ли это приоритетным потоком или нет, и не будет полезен. Это правда?
В настоящее время я смотрю на следующие предложения. Пожалуйста, предложите
Перемещение логики обработки задач за пределы asp.net и размещение в консольном приложении / сервисе.
и уведомить приложение, отправив сообщение из asp.net в MSMQ. После получения сообщения консольное приложение выполнит обработку и отправит уведомление по электронной почте
Служба WCF для получения сообщения и обработки
Любые другие лучшие идеи, пожалуйста, поделитесь
Спасибо
Sveerap