Ivan Paulovich efaeedce3f DIP
2017-10-05 16:44:58 -03:00
Ok
2017-09-06 22:50:55 -03:00
ok
2017-09-10 15:34:15 -03:00
DIP
2017-10-05 16:44:58 -03:00
OK
2016-11-02 23:32:21 -02:00
2016-11-01 13:51:48 -02:00
2017-09-06 15:17:14 -03:00
2017-09-06 15:20:57 -03:00
2016-11-01 13:51:48 -02:00
ok
2017-09-12 16:01:09 -03:00

Neste projeto experimental em Domain-Driven-Design com implementação de Aggregates + Event Sourcing + CQRS + Optimistic Concurrency, a técnica de Event Sourcing é usada como ferramenta de auditoria das modificações do conteúdo do Blog. A fonte dos dados são os Domain Events registrados no Kafka e para permitir consultas de alta performance foi criado um banco de dados MongoDB com o 'último estado já processado dos eventos'. Há um microsserviço auxiliar de autenticação. Tudo isso foi implementado em .NET Core/Standard 2.0 compatível com Docker! Divirta-se!

O Domínio

Domain

As Aplicações desta Solução

  • Producer: Web API que recebe os comandos de edição de conteúdo, produz Eventos de Domínio e publica as mensagens em um tópico no Kafka.
  • Consumer: Aplicativo Console que consome as mensagens do Kafka, deserializa em Eventos de Domínio e aplica nas agregações persistindo no MongoDB o novo estado.
  • Auth: Web API que gera tokens de autenticação para acesso ao WebAPI.

Por onde começar?

Há duas formas de iniciar a solução.

1. O jeito fácil

Resolver os pré-requisitos, definir o projeto inicial como sendo o docker-compose e então apertar Ctrl+F5 para executar todas as aplicações. Se tudo estiver correto, digite docker ps no seu terminal para verificar em quais portas cada aplicação está executando. Será algo assim:

Enviando comandos

A partir daí basta acessar:

Leia o o jeito não tão fácil para entender como criar um Token no Auth API para consumir os serviços do Producer API via swagger.

2. O jeito não tão fácil

A outra opção é inicializar aplicação por aplicação, seguindo o seguintes passos:

  1. Execute o projeto Jambo.Auth.WebAPI e chame o método Account/Token com qualquer usuário e senha. Guarde este token.

Auth

Auth com Token

  1. Execute o projeto Jambo.Producer.WebAPI e clique no botão Authorization (topo direito da página).

Digite bearer + valor_do_token e clique em fechar. Algo assim: Autorizando Chame os métodos para manutenção dos dados do Blog, Posts e Comentários. Enviando comandos

  1. Execute o projeto Jambo.Consumer.Console e garante que ele contínua em execução.

Comsumer em execução

  1. Visualize suas modificações

Queries

Demo

Próximos passos?

  1. Publicar os containers no Azure.
  2. Criar um CI/CD para atualizar os containers a cada commit.
  3. Criar testes de unidade, testes automatizados.
  4. Consumir serviços externos.
  5. Implementação alternativa de barramento: Azure Event Hubs
  6. Implementação alternativa de snapshot: Azure Cosmos DB
  7. Implementar um HealthCheck

Pré-requisitos

Agradecimentos

Obrigado aos amigos que me estimularam a criar este projeto e estão sempre contribuindo e dando feedback.

Obrigado de verdade!

Deixe o seu feedback

Agradeço todo comentário sobre o projeto. Envie suas dúvidas e sugestões no Fórum.

Histórico de Versões

  • 10/set/2017: release
Languages
C# 99.5%
Dockerfile 0.4%