Некоторые вопросы, которые вам, возможно, придется задать, прежде чем углубляться в архитектуру. Я предполагаю, что WS1 и WS2 принадлежат вам / вашей команде.
Короче говоря, подход, основанный на событиях, выглядит здесь как нельзя лучше. то есть вы можете иметь очередь между WS1 и WS2, так что WS1 отправляет сообщение в очередь запросов, WS2 забирает его, когда готово, и помещает ответ в очередь ответов, откуда WS1 может его прочитать. Пример. AWS и Azure .
Это может работать, а может и не работать, исходя из того, как вы можете отвечать на предыдущие запросы. Иногда лучше использовать обычный вызов на основе REST со стратегией повторения (например, стратегия экспоненциального отката в примере ). Благодаря этому вы также сможете быстрее получать отзывы о сбоях. Можно выбрать это, если ответы на вышеупомянутые вопросы
[1116 ] На заметку: если вы используете архитектуру, основанную на событиях, то WS2 может больше не быть веб-службой:)
Более актуальный метод должен был бы использовать Систему. Сеть. Почта - это - 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);
}
Очевидно, Вы, вероятно, хотели бы некоторую обработку ошибок и т.д. там - Отправляют, может выдать исключение, например, если сервер отказывается от соединений.
Создайте BaseController, которому все Ваши другие контроллеры наследовался. В BaseController переопределяют Метод OnActionExecuted и вводят Ваш код для отправки электронного письма.
public class BaseController : Controller
{
protected override void OnActionExecuted(ActionExecutedContext filterContext)
{
// Send mail here
base.OnActionExecuted(filterContext);
}
}
Класс SmtpClient с другой Системой. Сеть. Почтовые классы легко используются из любой программы.NET для отправки почты. Просто необходимо указать на него на доступный и согласный сервер SMTP.
Хорошо не действительно твердый послать электронное письмо с помощью.NET. Можно просто отправить почту из действия.
Но, я думаю, что мы говорим мало о входе здесь, и для входа существует диапазон 3th партийных библиотек. Я знаю, что существует тот по имени Log4Net.
Большинство этих платформ журналирования позволяет сконфигурироваться, как журналы хранятся, и porsibly также установка для отправки электронного письма, когда он регистрирует что-то.
Но в Вашем сценарии, это просто записало бы простую простую почтовую функцию, которая отправляет почту, когда пользователь начинает действия. Можно сделать взгляд на: http://www.developer.com/net/asp/article.php/3096831 - это - демонстрация отправки почты с помощью.NET - веб-формы, хотя, но основные вещи все еще относятся к MVC.