2013-10-07 1 views
0

Я разрабатываю веб-приложение с ASP.NET MVC3. Требование: в некоторый промежуток времени (0:00 или 10:00) приложение должно автоматически выполнять некоторые задачи, такие как: Изменить статус заказа в БД, отправить уведомление электронной почты клиенту, очистить папку temp ....MVC 3 - Выполняйте некоторые задачи в промежуток времени

Я думаю об использовании потока в Global.aspx, пусть он работает и спать 24 часа, но я не думаю, что это хорошее разрешение.

@ Спасибо за комментарий patryk-wiek, я нашел решение с помощью «Task Scheduler MVC» здесь. https://github.com/jgeurts/FluentScheduler

Это хорошее решение или нет? Я думаю, что писать оконную услугу немного для меня?

+2

Вы можете использовать любую систему планирования заданий/задач вне приложения (Планировщик заданий Windows) или внутри, например. [Кварц] (http://quartznet.sourceforge.net/) –

+1

Взгляните на ['System.Timers.Timer'] (http://msdn.microsoft.com/en-us/library/system.timers .timer.aspx). Это позволяет подключить обратный вызов, когда таймер истечет. –

+1

Будьте осторожны, IIS убьет ваш процесс пула приложений в любое время и без предупреждения, поэтому запланированное задание никогда не будет выполнено. Я рекомендую триггер вне процесса, который запустит ваше веб-приложение IIS и выполнит требуемый код. – Dai

ответ

0

вы можете использовать RX для того же путем создания службы окна для того же .., как я приложил один пример кода, который будет suscibe первым и будет делать операцию в регулярном интервале 2 minutes.:-

Observable.Generate(
       true, 
       _ => true, 
       i => 
       { 
        ////your code... 

        return i; 
       }, 
       i => i, 
       _ => TimeSpan.FromMinutes(2)).Subscribe(); 
3

Не делайте этого в своем веб-приложении, так как вы не можете контролировать, когда хост-процесс истекает время и идет!

Создайте службу Windows для выполнения этих задач.

http://msdn.microsoft.com/en-us/library/d56de412.aspx

0

Не делать это в вашем веб-приложение, еще потому, что AppPool может быть прекращено в любое время. Есть способы предотвратить это, но это не очень чистое решение.

Используйте планировщик окон, службу WCF или какое-либо решение рабочего процесса для работы с запущенными журналами.

Смежные вопросы