Запланированные задачи для веб-приложений - PullRequest
4 голосов
/ 23 августа 2008

Каковы различные подходы для создания запланированных задач для веб-приложений с отдельным веб-приложением или приложением для настольного компьютера или без него?

Ответы [ 11 ]

4 голосов
/ 23 августа 2008

Джефф обсуждал это в блоге Stack Overflow - http://blog.stackoverflow.com/2008/07/easy-background-tasks-in-aspnet/

По сути, Джефф предложил использовать CacheItemRemovedCallback в качестве таймера для вызова определенных задач.

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

Под Linux извлекайте cron.

3 голосов
/ 23 августа 2008

Если мы говорим о платформе Microsoft, то я бы всегда разрабатывал отдельную службу Windows для обработки таких пакетных задач.

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

2 голосов
/ 23 августа 2008

Если вы используете хост Linux, вы почти наверняка будете использовать cron .

2 голосов
/ 23 августа 2008

Я думаю, что само переполнение стека использует срок действия ApplicationCache для запуска фонового кода через определенные промежутки времени.

1 голос
/ 16 сентября 2008

Java и Spring - используйте кварц. Очень красиво и надежно - http://static.springframework.org/spring/docs/1.2.x/reference/scheduling.html

1 голос
/ 23 августа 2008

Используйте средства получения URL-адресов, такие как wget или curl, для выполнения запросов HTTP GET.

Защитите ваши URL-адреса с помощью аутентификации, чтобы никто не мог выполнять задачи, не зная пользователя / пароля.

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

1 голос
/ 23 августа 2008

Очень простой метод, который мы использовали там, где я работаю:

  1. Настройте веб-сервис / веб-метод, который выполняет задачу. При желании этот веб-сервис может быть защищен с помощью имени пользователя / пароля.
  2. Создайте консольное приложение, которое вызывает этот веб-сервис. При желании консольное приложение может отправлять параметры и / или возвращать какие-то метрики для вывода на консоль или во внешнее ведение журнала.
  3. Запланируйте этот исполняемый файл в выбранном планировщике задач.

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

1 голос
/ 23 августа 2008

Это может или не может быть то, что вы ищете, но прочитайте эту статью, " Имитация службы Windows с использованием ASP.NET для запуска запланированных заданий ". Я думаю, что StackOverflow может использовать этот метод или, по крайней мере, об этом говорили.

1 голос
/ 23 августа 2008

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

1 голос
/ 23 августа 2008

В Linux вы можете использовать задания cron (http://www.unixgeeks.org/security/newbie/unix/cron-1.html) для планирования задач.

Используйте средства получения URL-адресов, такие как wget или curl, для выполнения запросов HTTP GET.

Защитите ваши URL-адреса с помощью аутентификации, чтобы никто не мог выполнять задачи, не зная пользователя / пароль.

...