DDD: MailService.SendNotificationToUser () или User.Notify ()? - PullRequest
0 голосов
/ 21 марта 2012

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

У меня есть система, в которой пользователь получает уведомление, когда кто-то комментирует его статью.Прямо сейчас это по электронной почте.

Я изо всех сил пытаюсь реализовать этот способ DDD.

Вариант 1

У сущности пользователя есть метод Notify: User.Notify () Метод использует встроенные в C # классы для отправки уведомлений по электронной почте по электронной почте

Проблема с наличием этого в домене заключается в том, чтоэто зависит от технологии, и то, как пользователь получит уведомление, может измениться в будущем.Я чувствую, что это относится к инфраструктуре, но как тогда пользователь может иметь поведение?

Вариант 2

Я создаю Сервис: NotificationService.Notify (Пользователь)Служба использует встроенные в C # классы для отправки электронной почты

. Преимущество заключается в том, что служба может быть службой приложений, и, насколько я знаю, служба приложений может использовать инфраструктуру и вызывать объекты.например, System.Net.Mail и репозитории.

Как бы вы это реализовали?

1 Ответ

3 голосов
/ 21 марта 2012

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

Это не доменная служба, потому что речь идет не о бизнес-логике. Служба уведомлений абстрагирует реализацию инфраструктуры от вашего домена (пользователь). Уведомление может использовать электронную почту, MSMQ или помещать сообщения в базу данных. Это не должно влиять на вашу модель домена. Так что это определенно идет в инфраструктуру.

Итак, я бы выбрал вариант 2. Сервис инфраструктуры.

PS Подумайте о более информативном названии метода NotifyCommentAdded

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