Я размещаю обработчики событий домена на уровне домена как интерфейс домена IDomainEventHandler
.
Примером обработчика событий домена является политика, которая подписывается на определенное событие домена для инициализации новой транзакции (например, для запуска новой команды домена), поэтому имеет смысл иметь ее на уровне домена, поскольку она связана с бизнес логика
Можно подумать о примере, где заказ подтвержден и, следовательно, должен быть создан запрос на выставление счета. У нас есть событие OrderConfirmedEvent
, которое произошло. Политика в нашем домене будет отвечать за подписку на это событие и создавать команду домена, RequestInvoice
которая будет обрабатываться обработчиком команд и обрабатываться им соответствующим образом.
Если бы у нас был этот обработчик событий на уровне приложения, это означало бы, что уровень приложения, помимо управления действиями пользователя, будет выполнять некоторую бизнес-логику, которая кажется неправильной.
Однако у нас есть