Моя команда разрабатывает приложение ASP.NET, которое, помимо прочего, содержит функцию импорта.Импорт обычно инициируется пользователем, который вводит некоторые параметры на веб-странице, включая локальный файл, который необходимо импортировать.Когда пользователь нажимает «импортировать», файл должен быть загружен и затем импортирован.
Импорт может быть довольно длительной операцией, поэтому сделать это непосредственно из кода aspx.cs невозможно, для этого нужнобыть сделано каким-то фоновым способом.Также важно, чтобы после загрузки файла импорт не терялся.Я также хотел бы, чтобы импорт запускался немедленно , не требуя ожидания службы или запланированной задачи, которая просто проверяет доступную работу каждые X минут.
То, что я нашел в качестве альтернативы, такдалеко:
- Фоновый поток из ThreadPool или аналогичный в ASP.NET.В основном будет работать, но если пул приложений будет переработан, работа будет потеряна.
- Служба с таймером, который регулярно проверяет рабочую таблицу в БД и запускает импорт.Работает, но либо имеет задержку, либо вызывает очень частые запросы на работу из БД.
- Служба с запросом уведомления об изменении (не знаю точного имени, но можно подписаться на изменения из SQLсервер).
- Служба, получающая рабочие элементы через MSMQ.
- Служба WCF, размещенная в системной службе, а не в ASP.NET, чтобы избежать повторного использования.Либо служба WCF вызывается из ASP.NET изнутри, либо она напрямую открывается и вызывается из клиента через AJAX (если WCF, не размещенный в IIS, может предоставлять конечные точки AJAX).
Есть ли какие-либодругие альтернативы?Есть ли кто-нибудь с опытом вышеупомянутых альтернатив?