Model view controller 模型或控制器是否应负责发送电子邮件?

Model view controller 模型或控制器是否应负责发送电子邮件?,model-view-controller,Model View Controller,在MVC web应用程序中,我经常发送电子邮件 我通常在控制器中执行此操作,因为我从控制器加载所有视图(包括电子邮件视图) 然而,现在我有了一些从模型发送电子邮件的代码 电子邮件通常从哪一层发送?这有关系吗?它需要一致性吗 理想情况下,控制器应类似于将视图连接到模型的操作员。这要么属于模型层,要么属于服务层 我认为,只有当您有一个单独负责发送电子邮件的模型对象时,这才属于模型层。您不想将表示和逻辑混为一谈,这就是模型-视图-控制器中分离关注点的全部要点 这种类型的逻辑应该驻留在服务层中。然后,您

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

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

然而,现在我有了一些从模型发送电子邮件的代码


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

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

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


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

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