Должен ли я использовать .NET (System.Net.Mail) для пакетной отправки электронной почты моего веб-приложения или SQL (msdb.sp_send_dbmail)? - PullRequest
6 голосов
/ 24 июня 2010

Сценарий:

1) Мое приложение - это веб-приложение .NET 3.5 C #, а база данных - SQL 2008.

2) Сообщения электронной почты будут находиться в регионеот 100 до 1000 в день и инициируется различными взаимодействиями пользователей с приложением.

3) Большинство сообщений электронной почты будут содержать вложения размером от 50 КБ до 5 МБ.Некоторые электронные письма будут в формате HTML, а некоторые - в виде простого текста.

4) Все вложения будут получены из каталога на веб-сервере.

5) Сервер SQL - это отдельный компьютер дляВеб сервер.Все SQL-соединения из приложения осуществляются через входы SQL, а не проверку подлинности Windows.

6) Для масштабируемого решения отправляемые электронные письма будут помещаться в очередь в таблице базы данных, готовой к пакетному процессу для получения.Неудачные электронные письма должны повторяться до 4 раз.

Дилемма:

Я не уверен, стоит ли писать решение веб-сервера для отправки электронных писем (например, служба Windows).который опрашивает электронные письма, готовые к отправке) или может использовать почту базы данных SQL, которая проста в настройке и использовании и не требует особой разработки.

Тот факт, что вложения находятся на веб-сервере, предлагает мне использоватьрешение для веб-сервера, но мне было бы интересно узнать, пропустил ли я что-то.

Ответы [ 3 ]

3 голосов
/ 24 июня 2010

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

Единственное, что я рассмотрю, это тот факт, что вы храните вложения на веб-сервере, это означает, что сетевой трафик между веб-сервером и базой данных будет больше, чем если бы веб-сервер отправлял электронные письма (если они работают на разных серверы). Используя ваши цифры, это может быть 5 ГБ трафика в день во вложениях. Тем не менее, я бы пошел с решением БД и тщательно протестировать его, чтобы увидеть, если трафик становится проблемой. Если это так, вы не потратили много времени на разработку БД.

2 голосов
/ 24 июня 2010

Во-первых, будьте осторожны, отправляя 1000 писем в день очередями.Это хороший способ попасть в черный список от других почтовых серверов или даже от вашего интернет-провайдера.Во-вторых, я бы порекомендовал заняться рутиной .NET.Эта проблема попахивает сервисом.Даже если вы не строите это как сервис сегодня, вы можете захотеть сделать это в какой-то момент в будущем.С .NET вы можете реорганизовать свое решение для параллельной отправки электронной почты или доступа к очереди многопоточным способом.Все это будет сложно в SQL Server.Короче говоря, .NET дает вам возможность сделать более расширяемое решение, чем SQL Server.

2 голосов
/ 24 июня 2010

Я бы пошел с .NET вместо отправки писем из БД.Отправка электронных писем в .NET также очень проста и не потребует какого-либо большого времени на настройку или разработку.

В связанной заметке я понятия не имею, почему SQL Server может отправлять электронные письма, поскольку эта функцияне вписывается в модель хранения данных.SQL Server также выполняет 3D-рендеринг?

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