DDD, доменные службы и события - PullRequest
0 голосов
/ 02 апреля 2019

Ситуация:

Для работы с событиями домена Джимми Богарт предложил метод хранения событий в агрегатах.

Это из моегоС точки зрения, это очень удобный подход.Однако как насчет случая доменного события в доменной службе?

Доменная служба не должна иметь состояния (без сохранения состояния).В этом случае, теоретически, диспетчер событий IDispatcher должен быть внедрен в конструктор такого сервиса.

Вопрос:

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

  1. Сохранение в домене службы событий последней операции.Однако это приведет к нарушению принципа отсутствия состояния для службы домена.
  2. Возврат списка событий из метода службы на основе результатов операции (в методе возврата или другим способом, в зависимости от возможностей).языка программирования).

1 Ответ

1 голос
/ 02 апреля 2019

Примечание: этот пост был написан около пяти лет назад.Возможно, вы захотите ознакомиться с его более свежим (и более подробным): Life Beyond Distributed Transactions: реализация отступника

Доменная служба не должна иметь состояние

Правильно - и по этой причине очень подозрительно, что вы захотите назначить ответственность за события домена в доменной службе.

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

...