asp.net mvc платформа, автоматически пошлите электронное письмо

Некоторые вопросы, которые вам, возможно, придется задать, прежде чем углубляться в архитектуру. Я предполагаю, что WS1 и WS2 принадлежат вам / вашей команде.

  1. Как долго вы хотите ждать, пока WS2 снова включится и будет работать после его отключения?
  2. Какое время ожидания ответа от WS1 и WS2?
  3. Есть ли какой-либо другой нисходящий сервис, который использует WS1, и если этот сервис имеет SLA / ожидаемое время ответа?
  4. Как WS1 ожидает получить ответ от WS2?

Короче говоря, подход, основанный на событиях, выглядит здесь как нельзя лучше. то есть вы можете иметь очередь между WS1 и WS2, так что WS1 отправляет сообщение в очередь запросов, WS2 забирает его, когда готово, и помещает ответ в очередь ответов, откуда WS1 может его прочитать. Пример. AWS и Azure .

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

  1. Если время ожидания короткое, то есть в секундах
  2. Существует ожидание действительно быстрого времени ответа. В этом случае лучше сразу сообщить о сбое, чем ждать его.
  3. Если есть нисходящие приложения, которые имеют синхронную зависимость от WS1, следовательно, WS1 не может бесконечно ждать, пока WS2 обработает запрос
  4. Не существует предсказуемого канала ответа от WS2

[1116 ] На заметку: если вы используете архитектуру, основанную на событиях, то WS2 может больше не быть веб-службой:)

13
задан BIBD 21 February 2009 в 19:47
поделиться

4 ответа

Более актуальный метод должен был бы использовать Систему. Сеть. Почта - это - 2,0 замены для Системы. Сеть. Почта.

Что-то вроде этого, названное от любого BaseController (если существуют другие контроллеры, которым нужно это), фактический рассматриваемый контроллер.

У меня есть следующий код в статическом классе для обработки отправляющих по почте простых объектов простого текста с сервера:

internal static void SendEmail(MailAddress fromAddress, MailAddress toAddress, string subject, string body)
{
    var message = new MailMessage(fromAddress, toAddress)
                      {
                          Subject = subject,
                          Body = body
                      };

    var client = new SmtpClient("smtpServerName");
    client.Send(message);
}

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

21
ответ дан 1 December 2019 в 21:12
поделиться

Создайте BaseController, которому все Ваши другие контроллеры наследовался. В BaseController переопределяют Метод OnActionExecuted и вводят Ваш код для отправки электронного письма.

public class BaseController : Controller
{
    protected override void OnActionExecuted(ActionExecutedContext filterContext)
    {
        // Send mail here
        base.OnActionExecuted(filterContext);
    }
}
3
ответ дан 1 December 2019 в 21:12
поделиться

Класс SmtpClient с другой Системой. Сеть. Почтовые классы легко используются из любой программы.NET для отправки почты. Просто необходимо указать на него на доступный и согласный сервер SMTP.

2
ответ дан 1 December 2019 в 21:12
поделиться

Хорошо не действительно твердый послать электронное письмо с помощью.NET. Можно просто отправить почту из действия.

Но, я думаю, что мы говорим мало о входе здесь, и для входа существует диапазон 3th партийных библиотек. Я знаю, что существует тот по имени Log4Net.

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

Но в Вашем сценарии, это просто записало бы простую простую почтовую функцию, которая отправляет почту, когда пользователь начинает действия. Можно сделать взгляд на: http://www.developer.com/net/asp/article.php/3096831 - это - демонстрация отправки почты с помощью.NET - веб-формы, хотя, но основные вещи все еще относятся к MVC.

1
ответ дан 1 December 2019 в 21:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: