C# DDD: conhecendo os Domain Events

Ao desenvolver um projeto em C#, usando a abordagem DDD, após criar as entidades e seus comportamentos, muitas vezes precisamos criar eventos que são disparados após um comportamento específico do domínio.

Neste caso, nós temos uma abordagem chamada Domain Events, que após a executar uma função, é disparada um ou mais comandos que são executados após, ou até mesmo em segundo plano.

O Projeto

Para criar o projeto, se pressupõe que você já entende de abordagem por domínio, A estrutura conta com três projetos: um projeto para o domínio, outro console para exibir os dados e disparar os eventos e um projeto de IoC, ou seja, para usar Inversão de Controle ou Injeção de Dependência.

Criando os Projetos

Abra o Visual Studio 2017, e crie uma nova solução chamada DDDDomainEvents, e inclua um projeto tipo Class Library chamado DDDDomainEvents.Domain,  adicione outro projeto do tipo Class Library chamado DDDDomainEvents.IoC e por fim adicione um projeto do tipo Console App chamado DDDDomainEvents.Prompt. Todos os projetos foram criado em .NET Framework 4.7.

No projeto DDDDomainEvents.Domain, crie uma pasta chamada Entities, e dentro desta pasta, adicione uma classe chamada Person.cs.

No mesmo projeto, crie uma pasta chamada Events, e dentro desta pasta, adicione uma interface chamada IDomainEvent.cs.

Na pasta Events, adicione uma classe chamada PersonRegisteredEvent.cs.

Crie uma pasta chamada Handlers, e dentro desta pasta, adicione uma interface chamada IHandler.cs.

Na pasta Handlers, adicione uma classe chamada PersonSave.cs.

No projeto DDDDomainEvents.IoC adicione uma referência ao projeto DDDDomainEvents.Domain.

Abra o Package Manager Console, e instale o SimpleInjector no projeto DDDDomainEvents.IoC.

Adicione uma classe chamada BootStrapper.cs.

No projeto DDDDomainEvents.Prompt adicione uma referência aos projetos DDDDomainEvents.Domain e DDDDomainEvents.IoC.

Abra o Package Manager Console, e instale o SimpleInjector no projeto DDDDomainEvents.Prompt.

Altere a classe Program.cs para que ela dispare o evento.

Defina o projeto DDDDomainEvents.Prompt como o projeto padrão, clicando o botão direito sobre ele e em seguida clicando em Set as StartUp Project.

Acesse o código da solução:

github.com/tiagopariz/DDDDomainEvents

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *