Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Domain Events

Fala mestre, beleza?

Nesse capítulo sobre domain events você cria um ouvinte que é capaz de realizar log. Mas esse ouvinte não deveria estar na camada de aplicação? Já que geração de log não faz parte do domínio, sendo a razão de sua existência a própria aplicação? Outro ponto também é se eu quiser gerar log para uma plataforma externa irei depender de uma camada de infra, mas você está realizando a implementação na própria camada de domínio, isso não quebra os princípios da arquitetura limpa? Fiquei confuso com essas questões, na minha mente eu criaria uma interface de ouvinte para geração de log na camada de aplicação e criaria sua implementação na camada de infra, algo mais ou menos assim.

3 respostas
solução!

Perfeita observação, Diego.

Realmente o Ouvinte deveria estar na camada de aplicação. No calor da gravação deixei isso passar. Obrigado por apontar esse erro.

Quanto a dependências externas, você teria a interface de persistência de log na camada de aplicação, junto com os ouvintes, e na infra teria as implementações. Mas o ouvinte em si não precisa estar na camada de infra, sacou?

De novo, obrigado por pegar esse deslize meu. :-D

Quanto a dependências externas, você teria a interface de persistência de log na camada de aplicação, junto com os ouvintes, e na infra teria as implementações. Mas o ouvinte em si não precisa estar na camada de infra, sacou?

Entendi sim. E quando usar a aplicação o container de serviços resolve qual implementação de log o ouvinte vai usar, correto?

Eu já estava ficando maluco do por que o ouvinte estar na camada de domínio rsrs. Eu achei lindo a idéia de eventos de domínio, não sei se foi um dos motivos do seu surgimento, mas parece que uma das consequências é desacoplar mais a lógica das aplicações, não permitindo aqueles controladores enormes.

Exatamente, Diego. Se no momento atual você estiver logando no telegram, no seu DI vai ter a config pra gerar a instância de telegram. Se for fazer o log pra Sentry, vai mudar só nas configs do DI.

:-)

uma das consequências é desacoplar mais a lógica das aplicações, não permitindo aqueles controladores enormes.

É exatamente a ideia. Ter pequenas tarefas em cada classe da sua aplicação, poder adicionar e remover etapas de forma simples a um caso de uso, etc. :-D

E isso é só o começo. Um assunto que ainda quero estudar muito é de Event-Driven Architecture, Event-Sourcing, etc. :-D