代码之家  ›  专栏  ›  技术社区  ›  Sruly

我应该从哪里发送确认电子邮件?

  •  1
  • Sruly  · 技术社区  · 17 年前

    我需要向订户发送一封确认电子邮件。我应该从哪里发送,从控制器还是从服务层?

    澄清: 我肯定会创建一个名为SendConfirmationMail()的单独服务方法。问题是,谁将其称为处理注册表的控制器,还是将挂起的请求添加到DB的服务?

    很明显,我可以从这两个网站发送,但哪个才是真正的MVC?

    2 回复  |  直到 17 年前
        1
  •  3
  •   Robert Wilczynski    17 年前

    我想标准的方法是将电子邮件服务注入控制器,控制器只调用服务操作,如_emailService.Enqueue(myMessage)。

    public class MyController
    {
        IEmailService _emailService;
    
        public MyController(IEmailService emailService)
        {
            _emailService = emailService;
        }
    
        public ActionResult Email()
        {
            var myMessage = new MyMessage();
    
            // Initialize message here
    
            _emailService.Enqueue(myMessage);
            return View();
        }
    }
    

    其中一些好处是:

    • 另一个应用程序中的电子邮件功能 控制员/行动
    • 可测试性:您可以在中模拟电子邮件服务 在SMTP服务器上
        2
  •  0
  •   Andrew Hare    17 年前

    MVC鼓励 因此,在层中放置行为都是为了解决 涉及 对这种行为的评价。由于我不熟悉您的架构,我不知道您所说的“服务层”是什么意思,但由于发送电子邮件与您网站的模型、视图或控制器关系不大,我鼓励您将此功能移动到它所属的应用层。

    如果您的服务层实际上是应用层,那么我会将代码放在那里。