Você poderia me dizer sua opinião de que camada é a correta para colocar manipuladores de eventos de domínio no DDD? Por exemplo, eu tenho o serviço de aplicativo para adicionar um novo contrato e gostaria de enviar uma notificação por e-mail para a pessoa de contato, quando o contrato foi adicionado, o mesmo ocorre com o remetente de e-mail (que lida com o evento ContractAdded event) ou com o serviço de domínio ou algo mais?
13
O livro DDD original (Evans 2004) explica a camada de aplicação como uma camada fina que exercita objetos de domínio em resposta à ação do usuário. Manipuladores de eventos típicos para eventos de domínio, portanto, não pertencem à camada do aplicativo.
Pode fazer sentido colocar alguns deles na camada de domínio, desde que você não quebre as camadas criando uma dependência ascendente.
Se você tiver uma camada de infraestrutura abaixo da camada de domínio, o manipulador de eventos não poderá estar lá, pois isso quebraria as camadas.
Se você tiver uma camada de adaptadores acima da camada de domínio, poderá criar um manipulador de eventos lá. Confira a arquitetura hexagonal .
fonte
Coloco manipuladores de eventos de domínio na camada Domínio como uma interface de domínio
IDomainEventHandler
.Um exemplo de manipulador de eventos de domínio é uma política que assina determinado evento de domínio para inicializar uma nova transação (por exemplo: para acionar um novo comando de domínio); portanto, faz sentido tê-lo na camada Domínio, pois está relacionado a logíca de negócios.
Podemos pensar em um exemplo em que um pedido é confirmado e, portanto, uma solicitação de fatura deve ser criada. Temos um evento
OrderConfirmedEvent
que aconteceu. Uma política em nosso domínio seria responsável por se inscrever neste evento e criar um comando de domínioRequestInvoice
que será tratado pelo manipulador de comandos e tratado por ele de acordo.Se tivéssemos esse manipulador de eventos na camada de aplicativos, isso significaria que a camada de aplicativos, além de orquestrar as ações do usuário, executaria alguma lógica de negócios, o que parece incorreto.
No entanto, temos
fonte