Ответ 1
Обнаружено, что это потрясающий планировщик, FluentScheduler
Использование:
// Schedule an ITask to run at an interval
Schedule<MyTask>().ToRunNow().AndEvery(2).Seconds();
Я хочу создать систему уведомлений на своем веб-сайте (что-то вроде)
Как мы можем запланировать задачу для отправки уведомлений пользователям за каждые 24 часа?
Можем ли мы использовать MVC4 или использовать службу Windows?
Изменить:
Мой опыт использования FluentScheduler
через 3 месяца в приложении MVC4. FluentScheduler
легко конфигурируется и используется, но он не запускает задачи в любое время. Иногда запускаются и иногда не запускаются.
Я считаю, что лучший способ планирования - Windows Service
, чтобы обеспечить выполнение задачи в определенное время.
Обнаружено, что это потрясающий планировщик, FluentScheduler
Использование:
// Schedule an ITask to run at an interval
Schedule<MyTask>().ToRunNow().AndEvery(2).Seconds();
Вам нужен плановый планировщик .Net. Вот хороший: http://quartznet.sourceforge.net/
Вы можете использовать службу рассылки ATrigger. A .NET library также доступна для создания запланированных задач без накладных расходов. Журнал ошибок, аналитика, задания и другие преимущества.
Отказ от ответственности: я был среди команды Атриггера. Это бесплатная программа, и у меня нет коммерческой цели.
Возможно, вы хотите использовать запланированную задачу. Выполнение этого в MVC - это плохая идея (реакция на смешивание), и создание службы Windows выглядит для меня излишним (потому что что-то не нужно запускать все время).
Я использую запланированную задачу для окон.
У меня есть небольшое приложение, чем запись в bd, а затем доступ к веб-сайту с этим recordId (Guid) в качестве параметра.
В mvc я проверяю, существует ли id, если он существует, я запускаю задачи, а затем удаляю запись в db, если не игнорировать ее.
таким образом, я могу добавить расписание с параметром. без обновления приложения каждый раз, когда мне нужна новая запланированная задача. я просто добавляю новую задачу как "myapp.exe/MyNewTaskName"
надеюсь, что это поможет кому-то; -)
Прежде всего:
Install-Package FluentScheduler
// Schedule a simple task to run at a specific time
Schedule(() => System.Diagnostics.Debug.Write("This is from service " + DateTime.Now.Second+"\n"))
.ToRunNow().AndEvery(2).Seconds();
Global.asax.cs
с TaskManagerTaskManager.Initialize(new Test());
Существует также встроенная опция QueueBackgroundWorkItem. Он был добавлен в .Net 4.5.2 и вот руководство по его использованию в MVC.
В дополнение к ранее упомянутому FluentScheduler у вас также есть HangFire. И если вы планируете развертывать Azure там есть несколько различных сервисов для этого.