Подтвердить что ты не робот

Как планировать задачу в MVC4 С#?

Я хочу создать систему уведомлений на своем веб-сайте (что-то вроде)
Как мы можем запланировать задачу для отправки уведомлений пользователям за каждые 24 часа?

Можем ли мы использовать MVC4 или использовать службу Windows?

Изменить:
Мой опыт использования FluentScheduler через 3 месяца в приложении MVC4.
FluentScheduler легко конфигурируется и используется, но он не запускает задачи в любое время. Иногда запускаются и иногда не запускаются.
Я считаю, что лучший способ планирования - Windows Service, чтобы обеспечить выполнение задачи в определенное время.

4b9b3361

Ответ 1

Обнаружено, что это потрясающий планировщик, FluentScheduler

Использование:

// Schedule an ITask to run at an interval
    Schedule<MyTask>().ToRunNow().AndEvery(2).Seconds();

Ответ 3

Вы можете использовать службу рассылки ATrigger. A .NET library также доступна для создания запланированных задач без накладных расходов. Журнал ошибок, аналитика, задания и другие преимущества.

Отказ от ответственности: я был среди команды Атриггера. Это бесплатная программа, и у меня нет коммерческой цели.

Ответ 4

Возможно, вы хотите использовать запланированную задачу. Выполнение этого в MVC - это плохая идея (реакция на смешивание), и создание службы Windows выглядит для меня излишним (потому что что-то не нужно запускать все время).

Ответ 5

Я использую запланированную задачу для окон.

У меня есть небольшое приложение, чем запись в bd, а затем доступ к веб-сайту с этим recordId (Guid) в качестве параметра.

В mvc я проверяю, существует ли id, если он существует, я запускаю задачи, а затем удаляю запись в db, если не игнорировать ее.

таким образом, я могу добавить расписание с параметром. без обновления приложения каждый раз, когда мне нужна новая запланированная задача. я просто добавляю новую задачу как "myapp.exe/MyNewTaskName"

надеюсь, что это поможет кому-то; -)

Ответ 6

Прежде всего:

  • Добавить пакет Nuget 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();
  1. Зарегистрируйте этот класс реестра в Application_Start Global.asax.cs с TaskManager
TaskManager.Initialize(new Test());

GitHub

Ответ 7

Существует также встроенная опция QueueBackgroundWorkItem. Он был добавлен в .Net 4.5.2 и вот руководство по его использованию в MVC.

В дополнение к ранее упомянутому FluentScheduler у вас также есть HangFire. И если вы планируете развертывать Azure там есть несколько различных сервисов для этого.