У меня есть веб-сайт asp.net(mvc). В качестве части функций мне придется поддерживать некоторые длительные операции, например:
Инициируется пользователем: Пользователь может загрузить (xml) файл на сервер. На сервере мне нужно извлечь файл, сделать некоторые манипуляции (вставить в db) и т.д. Это может занять от одной минуты до десяти минут (или даже больше - зависит от размера файла). Конечно, я не хочу блокировать запрос при запуске импорта, но я хочу перенаправить пользователя на страницу прогресса, где у него будет возможность просмотреть статус, ошибки или даже отменить импорт.
Эта операция не будет часто использоваться, но может случиться так, что два пользователя одновременно попытаются импортировать данные. Было бы неплохо запустить импорт параллельно. Сначала я думал создать новый поток в iis (действие контроллера) и запустить импорт в новом потоке. Но я не уверен, что это хорошая идея (создать рабочие потоки на веб-сервере). Должен ли я использовать службы Windows или любой другой подход?
Инициируется из системы: - Мне придется периодически обновлять индекс lucene с новыми данными. - Мне придется отправлять массовые электронные письма (в будущем).
Должен ли я реализовать это как задание на сайте и запустить задание через Quartz.net, или я должен также создать службу Windows или что-то еще?
Каковы наилучшие методы работы с рабочими местами?
Спасибо!