Ответ 1
http://quartznet.sourceforge.net/
"Quartz.NET - это порт очень пропульсивной (sic!) с открытым исходным кодом структуры планирования работы Java, Quartz."
PS: Слово мудрому, не пытайтесь просто перейти к quartz.net, когда на работе; -)
Я ищу библиотеку С#, предпочтительно с открытым исходным кодом, которая позволит мне планировать задачи с достаточной гибкостью. В частности, я должен иметь возможность планировать, чтобы все выполнялось каждые N единиц времени, а также "Каждый будний день в XXXX раз" или "Каждый понедельник в XXXX раз". Больше возможностей, чем было бы хорошо, но не обязательно. Это то, что я хочу использовать в Azure WorkerRole, который сразу же исключает запланированные задачи Windows, "на", "Cron" и любое стороннее приложение, которое требует установки и/или графического интерфейса для работы. Я ищу библиотеку.
http://quartznet.sourceforge.net/
"Quartz.NET - это порт очень пропульсивной (sic!) с открытым исходным кодом структуры планирования работы Java, Quartz."
PS: Слово мудрому, не пытайтесь просто перейти к quartz.net, когда на работе; -)
Я использовал Quartz в свои дни Java, и он отлично работал. Я сейчас использую его для какой-то работы .Net, и он работает еще лучше (конечно, есть несколько лет, чтобы он мог стабилизироваться). Поэтому я, разумеется, второй раз рекомендую для этого.
Еще одна интересная вещь, на которую вы должны обратить внимание, которую я только начал играть, - это новая программа System.Threading.Tasks в .NET 4.0. Я только что использовал задачи для распараллеливания работы, и он пользуется большим преимуществом для нескольких ядер/процессоров. Я заметил, что в нем есть класс TaskScheduler, я не смотрел его подробно, но он имеет такие методы, как QueueTask, DeQueTask и т.д. Возможно, стоит хоть какое-то исследование.
См. Новая библиотека классов планировщика заданий для .NET на Codeproject.
Я прочитал о Quartz в этом вопросе Как я могу запланировать службу Windows С# для выполнения задачи ежедневно?. Это библиотека С# и позволяет гибкое планирование.
Кварц кажется хорошим решением.
Мне недавно (в этом году) пришлось написать персонализированный планировщик задач по крупному проекту, над которым я работал. Они также не могли использовать планировщик заданий Windows, а также хотели иметь возможность выполнять пользовательские функции благодаря загрузке сборок (через веб-сайт ASP.net), а служба выполнила соответствующую задачу в указанное время.
Вещь была честно немного кошмаром (не так много для проектирования и реализации, но логика планирования была немного перетянута).
Я бы очень рекомендовал исчерпать все другие возможности, прежде чем решиться "бросить свои собственные" (a.k.a изобретать колесо!).
Существует новый планировщик облачных вычислений из Aditi Technologies, называемый Scheduler.
Планировщик позволяет разработчикам планировать выполнение задач через HTTP webhooks, которые запускаются на простых или сложных графиках CRON.