Планировщик Windows ИЛИ задание SQL Server для отправки дайджест-писем - PullRequest
0 голосов
/ 05 января 2010

Будет отправлять электронные письма из приложения на плановой основе.

У меня в приложении ASP.NET MVC есть EmailController с методами действий, по одному для каждого типа уведомлений / сообщений электронной почты, которые необходимо вызывать в разное время в течение недели.

Вопрос: Планировщик Windows (работающий на сервере Server 2008) лучше или хуже, чем планирование с помощью задания SQL Server? А почему?

Спасибо

Ответы [ 2 ]

0 голосов
/ 01 апреля 2011

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

0 голосов
/ 20 марта 2010

ИМХО иметь планировщик вызова в контроллере и выполнить методы действия для запуска уведомлений, разработанных лучше всего. Мой процесс (к лучшему для худшего) таков:

  1. Поместите код для вызова контроллера / действия в файл .vbs. Для метода действия требуется «защитный код», который должен соответствовать значению в файле web.config, иначе он не будет выполнен (я думаю, что это уменьшит вероятность того, что некоторые люди попадут в метод действия с помощью браузера и запустят уведомление об отправке). код, когда он не должен быть запущен).

  2. Создайте запланированное задание в планировщике для регулярного вызова этого файла.

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

Во всяком случае, это работает. Единственная проблема, с которой я столкнулся - это ударить по https. Это не сработало, так как я считаю, что перед задачей стояли задачи по предоставлению учетных данных (чего не могло быть, поскольку она запускалась программно). Изменение его на http сработало, и imo не создает никакой угрозы безопасности.

Мысли? Лучший способ реализовать это? Я бы хотел услышать все, что кто-либо может предложить.

Спасибо

...