Имеется web-приложение на ASP.NET. Как включить в инфраструктуру этого приложения возможность выполнения долгих задач в фоне? Задачи эти никак не связаны с запросами пользователей к сайту. Лучший пример реализации приложений для таких задач — это daemon-программы операционных систем, например, сервисы в Windows. Однако, использовать windows services нельзя на компьютерах хостера. Вопрос в том, как элегантнее это сделать в рамках web-приложения.
Как реализовать daemon-процессы для ASP.NET приложения?
2
Лучший ответ:
1
Можно использовать Quartz.NET для запуска периодически выполняющихся задач. В Spring.NET есть классы-обертки, которые позволяют легко создавать задачи и триггеры в контейнере. Вот статья по этому поводу: Using Quartz.NET, Spring.NET and NHibernate to run Scheduled Tasks in ASP.NET
Новые ответы
1
Самое распространённое решение этой проблемы:
1 Callback для таймера
Timer timer = new Timer(new TimerCallback(MyWorkCallback), HttpContext, 5000, 5000);
2 Поток в пул потоков
Thread thread = new Thread(Work);
thread.IsBackground = true;
thread.Start();
3 Собственно рабочий процесс
BackgroundWorker worker = new BackgroundWorker();
worker.DoWork += new DoWorkEventHandler(DoMyWork);
worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(DoMyWork_Completed);
worker.RunWorkerAsync();
4 Кэширование как здесь

А в чем суть подхода номер 4?
В качестве примера