Планирование задач.Net, работа SQL? - PullRequest
1 голос
/ 28 июня 2010

Я создаю систему, в которой пользователи могут настроить рассылку для отправки в определенное время.Прежде чем быть, я хотел получить совет.Во-первых, есть ли уже компонент .Net, который будет обрабатывать задания по планированию (запуск другого приложения или вызов URL-адреса), который будет делать то, что я предлагаю (Open Source было бы здорово)?Если нет, то лучше ли запланировать задание в SQL и запустить какой-нибудь сценарий, создать службу .Net, которая будет проверять расписание в файле xml или db, или приложение будет создавать запланированные задачи?Там может быть тонна задач, поэтому я думаю, что создание запланированных задач или заданий SQL не может быть хорошей идеей.Здесь может быть типичный сценарий;Пользователь хочет отправить рассылку своим клиентам.Пользователь создает рассылку в субботу, но не хочет, чтобы она выходила до понедельника.Пользователь хочет, чтобы одно и то же электронное письмо отправлялось каждый понедельник в течение месяца.Спасибо за внимание!

Ответы [ 3 ]

1 голос
/ 28 июня 2010

Если вы хотите использовать легкодоступные службы в самой Windows, ознакомьтесь с этой статьей Новая библиотека задач планировщика задач в CodeProject о том, как создавать запланированные задачи в Windows из приложения C #.

Вероятно, у вас больше гибкости и возможностей, если вы используете C # и запланированные задачи в Windows, а не ограничиваетесь тем, что можно сделать в SQL Server. Задания агента SQL Server отлично подходят - для конкретных вещей, в основном - для планов обслуживания и так далее.

1 голос
/ 28 июня 2010

Вы можете создать свой собственный сервис Windows, который планирует и выполняет задания.Обязательно делайте хорошие абстракции.В аналогичном проекте я использовал абстракцию, в которой элементы планирования абстрагируются как задания, составленные из задач.Например, отправка новостной рассылки может быть работой, тогда как отправка новостной рассылки каждому подписчику может рассматриваться как задача.Затем вам нужно запустить задание и задачи в определенных моделях потоков, предпочтительно используя потоки Threadpool или Task Parallel Library.По возможности используйте асинхронный API для ввода-вывода.Также отделите вашу логику планирования от абстракций.так что логика планирования может выполнять произвольные типы заданий и их инклюзивные задачи.

1 голос
/ 28 июня 2010

Check Quartz.NET

Quartz.NET - это полнофункциональная система с открытым исходным кодом , которая может использоваться в самых маленьких приложенияхдля крупных корпоративных систем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...