Должна ли модель или контроллер отвечать за отправку электронных писем? - PullRequest
19 голосов
/ 22 сентября 2010

В веб-приложении MVC я часто отправляю электронные письма.

Обычно я делаю это в контроллере, так как загружаю все свои представления из контроллера (включая представления электронной почты).

Теперь, однако, у меня есть некоторый код, куда электронное письмо отправляется от модели.

С какого уровня обычно отправляется электронная почта? Это имеет значение? Нужно ли для согласованности?

1 Ответ

16 голосов
/ 22 сентября 2010

В идеале контроллер должен быть похож на оператора, связывающего представление с моделью. Это относится либо к модели, либо к уровню обслуживания.

Я бы сказал, что это относится к уровню модели, только если у вас есть объект модели, который несет полную ответственность за отправку электронной почты. Вы не хотите объединять представление и логику, вот и вся точка разделения проблем в Model-View-Controller.

Этот тип логики должен находиться на уровне сервиса. После этого вы можете использовать внедрение зависимостей для внедрения службы в контроллер и вызова EmailSenderService.sendEmail ();

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...