Для простоты я собираюсь использовать сценарий отправки писем с днем рождения в клиентскую базу ~ 1,000,000 клиентов (хранящихся в БД), так как мой собственный сценарий I ' м, пытающийся решить, схож.Шаблоны проектирования для C# Службы Windows, отправляющие сообщения с датой
Как правило, решением, которое я бы разработал, было бы создание службы Windows, запланированной с использованием Quartz.net, которая будет опросить всю таблицу клиентов (хотя и проиндексирована), ища дни рождения, которые соответствуют сегодняшней дате (или всякий раз, когда выполняется Служба). Служба будет охватывать список клиентов и отправлять электронную почту и т. Д. Это планируется запустить, скажем, один раз в день.
Мне было интересно, если это нормальный подход к решению этой проблемы или есть лучший способ/другой шаблон? Опрос базы данных мне кажется ... немного вонючей.
Я думаю, что, поскольку мы знаем день рождения клиентов, когда они подписываются (например, их день рождения может быть через несколько недель), следует Я на момент подписания, проактивно настроил график для запуска?
Одна вещь, которую я пытаюсь избежать, - это опрос базы данных, когда мы знаем, что в тот день нет дней рождения (хорошо, из 1 000 000 клиентов вы ожидаете, что их было несколько! ... но давайте притворимся, что их нет в течение целого месяца ..) - какое решение могло бы избежать этой проблемы?
Благодаря
Выполнение запроса данных один раз в день, даже если результатов нет в этот день, похоже, что это не проблема. Я действительно сомневаюсь в использовании службы Windows с системой планирования, хотя запланированное консольное приложение кажется более применимым к этому сценарию. (Служба Windows всегда будет работать, а не запланирована.) – David
Это то, что я тоже делаю. Я создаю консольные приложения, которые выполняют эти задачи, и планирую их с помощью Планировщика заданий. –
Спасибо за ответы - я использую Topshelf и Quartz.net. Локально он работает как консольное приложение, но оно установлено/размещено в службе Windows. Само планирование управляется кварцем. –