Периодические уведомления по электронной почте (Windows Azure .Net)

У меня есть приложение, написанное на C# ASP.Net MVC4 и работающее на веб-сайте Windows Azure. Я хотел бы написать услугу / работу, чтобы выполнить следующее:
1. Читайте информацию о пользователе из базы данных сайта
2. Создайте краткий обзор активности сайта.
3. Создайте сообщение электронной почты в формате HTML, содержащее сводку для каждой учетной записи пользователя.
4. Периодически отправлять такие письма каждому пользователю

Я новичок в облачных службах Windows Azure и хотел бы узнать лучший подход / решение для достижения вышеуказанного.

Исходя из результатов моих исследований, я вижу, что независимая рабочая роль облачных сервисов вместе с SendGrid и Postal будет наиболее подходящей. Пожалуйста, предложите.

2 ответа

Решение

Вы на правильном пути, но... Помните, что рабочая роль (или веб-роль) - это в основном проект виртуальной машины Windows Server, и вы запускаете один или несколько экземпляров этого определения роли. И эта виртуальная машина, как и локально работающий Windows Server, может одновременно выполнять несколько задач. Так что... нет необходимости создавать отдельную рабочую роль только для ежечасных электронных писем. Подумайте об этом: в течение почти часа он будет бездействовать, и вы будете платить за него (сколько бы раз вы ни выполняли роль, которую вы запускаете, и вы не можете сбросить ее до нуля - вам всегда нужен минимум один) пример).

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

Одна вещь, которую вам нужно сделать, независимо от отдельной роли или повторно используемой роли: будьте готовы к нескольким экземплярам. То есть: если у вас есть два экземпляра роли, они оба будут запускать код для проверки каждый час. Так что вам понадобится схема, чтобы оба экземпляра не выполняли одну и ту же задачу. Это можно решить несколькими способами. Например: используйте сообщение очереди, которое остается невидимым в течение часа, а затем появляется, и ваш код будет проверять, может быть, каждую минуту сообщение очереди (и первый, кто его получит, выполняет ежечасные операции). Или, может быть, запустить quartz.net.

Я не знал почтовый, но кажется, что это правильное сочетание.

Другие вопросы по тегам