2017-01-12 8 views
0

Я пытаюсь реализовать логику для моего приложения .NET MVC, где я бы триггер запланированной задачи в моем приложении на следующей основе:брикетирования запланированные задачи в C# .NET MVC приложения

First scheduled task to run from 00 am to 1 am in the morning 
Second scheduled task to run from 1:10 am to 08:00 am in the morning 
Third scheduled task to run from 8:15 am to 11:15 pm every 1 hour 

Это повторится каждый день 365 дней в году ...

Какой механизм в .NET или внешней библиотеке можно использовать для реализации этого самого простого способа с небольшим кодом?

Я пытался реализовать его с библиотекой Quartz.NET, но мне не понравилось, это вообще, у меня было две запланированные задачи работы, где один никогда не будет работать вообще в назначенное время ...

+1

Поверьте, вы не хотите реализовывать это в своем приложении MVC. Если вы не верите мне, я предлагаю вам прочитать следующее сообщение в блоге: http://haacked.com/archive/2011/10/16/the-dangers-of-implementing-recurring-background-tasks-in-asp -net.aspx/ –

+0

@DarinDimitrov, почему бы и нет, не могли бы вы его продумать? – User987

+0

@DarinDimitrov Как вы это сделаете? – User987

ответ

3

Вы не хотите быть выполнения длительных и повторяющихся фоновых задач в вашем веб-приложения по нескольким причинам. Вы можете пройти через following blog post, который их очень хорошо описывает.

Я бы порекомендовал вам переместить эту логику в отдельную службу Windows или даже в консольное приложение, чьи прогоны можно планировать с помощью планировщика задач Windows с нужными интервалами.

Преимущество этого в том, что вы будете отключать свое веб-приложение от выполнения длительных задач, которые будут потреблять ценные ресурсы с вашего веб-сервера. Разумеется, как веб-сервер, так и рабочая служба могут совместно использовать общий централизованный хранилище данных или уровень обмена сообщениями, чтобы в случае необходимости обмениваться информацией.

+0

удивительный ответ! Не одна строка кода, но информация, которую вы предоставили, более ценна, чем написание 1000 строк кода! Я буду работать этим, спасибо много! – User987

+0

Если это не долго работающая задача, вы можете открыть функциональность в своем веб-приложении через веб-службу, а затем использовать консольное приложение для вызова открытых функций через веб-службу. Консольное приложение можно планировать через Планировщик Windows для выполнения по требуемому расписанию. –

1

Визуальный Cron - достойный планировщик задач, который вы можете использовать. Мы используем его, вызывая методы обслуживания на наших серверах asp.net/mvc/webapi.

http://www.visualcron.com/

+0

Привет, Рик, это открытый источник или? – User987

0

Для планирования задач в ASP.NET MVC у вас есть несколько вариантов:

Будьте осторожны, если вы попытаетесь самостоятельно реализовать собственное решение, так как любое исключение в потоке, не связанное с запросом, остановит весь процесс.