【问题标题】:Should the model or controller be responsible for sending emails?模型或控制器是否应该负责发送电子邮件?
【发布时间】:2010-09-22 00:56:03
【问题描述】:

在 MVC Web 应用程序中,我经常发送电子邮件。

我通常在控制器中执行此操作,因为我从控制器加载所有视图(包括电子邮件视图)。

不过,现在我有一些代码用于从模型发送电子邮件。

电子邮件通常从哪一层发送?有关系吗?它需要保持一致吗?

【问题讨论】:

  • 这取决于,“用户”是否发送电子邮件,然后看到确认页面?如果是这样,应该在控制器中完成(发送电子邮件,显示确认视图)。如果它是后台/管理的事情,控制器应该调用服务层中的方法,如下面的回答所述。
  • 我认为电子邮件的实际发送仍应在服务中完成。控制器应该实例化服务,将数据传递给它,获取响应,然后调用视图来渲染传递结果数据。

标签: model-view-controller


【解决方案1】:

理想情况下,控制器应该类似于将视图连接到模型的操作员。这要么属于模型层,要么属于服务层。

我认为只有当你有一个单独负责发送电子邮件的模型对象时,它才属于模型层。您不想将表示和逻辑混合在一起,这就是模型-视图-控制器中关注点分离的全部意义所在。

这种类型的逻辑应该驻留在服务层中。然后,您可以使用依赖注入将服务注入控制器并调用 EmailSenderService.sendEmail();

【讨论】:

    猜你喜欢
    • 2010-10-22
    • 2015-03-05
    • 2019-12-06
    • 2019-06-16
    • 2021-06-02
    • 1970-01-01
    • 1970-01-01
    • 2011-07-27
    • 1970-01-01
    相关资源
    最近更新 更多