Имеется web-приложение на ASP.NET. Как включить в инфраструктуру этого приложения возможность выполнения долгих задач в фоне? Задачи эти никак не связаны с запросами пользователей к сайту. Лучший пример реализации приложений для таких задач — это daemon-программы операционных систем, например, сервисы в Windows. Однако, использовать windows services нельзя на компьютерах хостера. Вопрос в том, как элегантнее это сделать в рамках web-приложения.
Как реализовать daemon-процессы для ASP.NET приложения?
Лучший ответ:
Можно использовать Quartz.NET для запуска периодически выполняющихся задач. В Spring.NET есть классы-обертки, которые позволяют легко создавать задачи и триггеры в контейнере. Вот статья по этому поводу: Using Quartz.NET, Spring.NET and NHibernate to run Scheduled Tasks in ASP.NET
Новые ответы
Система X-Registar® –Новый гуманитарный проект, результат сотрудничества врачей и специалистов в области IT. Цель проекта – профилактика ЗППП. [url=http://x-registar.ru]гепатит[/url]
Путь к Истине начинается здесь - http://a.freewey.com Внимание! Это не реклама сайта - это "реклама" Истины, которую должен знать каждый. Свои ссылки вы сможете опубликовать на странице "Your site".
Hello I would like to tell you about the music genre [b]HardStyle[/b]. With it you can find on the site [url=http://defqon.ru/]HardStyle[/url], just visit [url=http://forum.defqon.ru/]Hardstyle Forum[/url]. With best wishes. :-)
I have tried Viagra and Cialis before and must say that Levitra causes less side effects though. I had terrible headache with Viagra which made sex impossible sometimes. With Levitra ...
[url=http://www.generic-only.com/]Cheap meds. Quality guaranteed by brand [/url]
Посмотрите действительно запоминающийся сайт: [URL=http://davai-znakomitsa.ru/znakomstva-chepetsk.html]знакомства чепецк[/URL]
Оптимально начать письмо с приветствия (Hello, Hi, Dear) и собственно обращения по имени к мужчине.
Daybed plans free :-x [url=http://demnnwq.fyihoj.in/Bh4n7.html]Oxycodone er op[/url] apavioccabusese Citi business card login
Самое распространённое решение этой проблемы:
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?
В качестве примера
супер, спасибо. как раз это искал.