Как реализовать daemon-процессы для ASP.NET приложения?

2

Имеется web-приложение на ASP.NET. Как включить в инфраструктуру этого приложения возможность выполнения долгих задач в фоне? Задачи эти никак не связаны с запросами пользователей к сайту. Лучший пример реализации приложений для таких задач — это daemon-программы операционных систем, например, сервисы в Windows. Однако, использовать windows services нельзя на компьютерах хостера. Вопрос в том, как элегантнее это сделать в рамках web-приложения.

Лучший ответ:

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?

Sergey

В качестве примера


v1.7.123.556
© 2009—2010 CodeHelper FAQ | О сайте | Обратная связь | История изменений
Creative Commons LicenseМатериалы сайта распространяются под лицензией Creative Commons Attribution-Share Alike 3.0 Unported.