2013-04-09 1 views
1

У меня есть веб-проект, написанный на C# и использующий SQL Server. Мне нужно написать систему уведомлений по электронной почте. Я провел некоторое исследование, и некоторые люди предлагают использовать CLR, а некоторые предлагают бизнес-логику в коде C#. Я раньше не делал эту систему, и я хочу знать, как это делают другие люди.создать систему оповещения по электронной почте, которая отправляет электронные письма на триггеры SQL-сервера

Что я имею в виду - создать таблицу Queue и триггеры для таблиц, которые я хочу наблюдать за изменениями. Когда триггер будет выполнен, он вставляет запрос электронной почты в таблицу Queue. Позже я закрою эту таблицу очередей и отправлю электронные письма. Я могу использовать веб-службы Amazon для отправки писем в ближайшее время, но пока не решил.

Как вы думаете, это хорошая идея?

ответ

3

Это хорошая идея, но волна вы посмотрели, что уже есть, из коробки? sp_send_dbmail делает почти одинаково. Он помещает запрос почты в очередь и использует внешнее приложение для работы с SMTP. Я считаю, что если вы должны использовать Amazon SNS, тогда встроенная база данных не будет работать.

Не слушайте совета, который рекомендует отправлять электронную почту непосредственно из триггера (например, с помощью SQLCLR). Помимо очевидного повышения производительности (каждая операция DML в таблице теперь должна ждать огромной задержки SMTP или HTTP-операции), у вас есть гораздо более серьезная проблема последовательности транзакций, как вы помните письмо об откате? Так что да, использование промежуточной очереди является обязательным. Также взгляните на Using Tables as Queues.

+0

большое спасибо –

Смежные вопросы