Как вы справляетесь с запланированными задачами для ваших сайтов, работающих на IIS? - PullRequest
7 голосов
/ 20 декабря 2008

У меня есть веб-сайт, работающий на сервере Windows, и я хотел бы добавить некоторые запланированные фоновые задачи, которые выполняют различные обязанности. Например, клиент хотел бы, чтобы пользователи получали электронные письма, в которых резюмируется недавняя активность на сайте.

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

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

Ответы [ 5 ]

4 голосов
/ 20 декабря 2008

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

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

Но, если честно, если вы не в срок, я бы применил принцип KISS и выполнил запланированное задание для каждого задания.

2 голосов
/ 15 июля 2010

Проблема с выполнением операций из запланированного EXE, а не изнутри веб-страницы, состоит в том, что операции могут получить выгоду или даже требуют ресурсов, которые веб-страница будет иметь - Кэш IIS и кэш ORM - две вещи, которые приходят на ум. В случае ORM внесение изменений в базу данных вне контекста веб-приложения может быть даже фатальным. Я предпочитаю запланировать curl.exe для запроса веб-страницы у localhost.

2 голосов
/ 25 декабря 2008

Мы используем службу планировщика Windows, которая запускает небольшое консольное приложение, которое просто передает параметры в веб-службу.

Например, если у пользователя есть запланированные отчеты # 388 и # 88, запланированная задача создается с командной строкой, которая выглядит следующим образом:

c: \ launcher \ app.exe отчет: 388 отчет: 88

Когда запускается планировщик, это приложение просто выполняет веб-метод на веб-службе, например InternalService.SendReport (int id).

Обычно в вашем веб-приложении уже есть вся необходимая бизнес-логика. Такой подход позволяет использовать его с минимальными усилиями, поэтому нет необходимости создавать какой-либо сложный сервис .exe или windows с подключаемыми модулями и т. Д.

2 голосов
/ 20 декабря 2008

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

1 голос
/ 20 декабря 2008

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

...