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

ale*_*lex 20 model-view-controller

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

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

但是,现在,我有一些电子邮件从模型发送的代码.

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

Vis*_*ons 17

理想情况下,控制器应该像将视图连接到模型的运算符.这属于模型或服务层.

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

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