Web Commands


Quando falamos de CQRS, temos as consultas e os comandos. Esses comandos podem ser consumidos diretamente por aplicações, mas como expor publicamente para os clientes? Uma opção comum nos dias de hoje é utilizar o protocolo HTTP, facilitando assim o consumo pelas mais diversas linguagens e tecnologias. E quais as opções no .NET para fazermos esta exposição?

O ASP.NET é um candidato para isso, já que em sua versão core está modularizado e flexível, e assim podemos otimizar o pipeline de execução com somente aquilo que seja de fato necessário para executar os comandos. A finalidade do vídeo abaixo é exibir uma forma alternativa para incorporar os comandos do domínio no ASP.NET, utilizando o mínimo de recursos possível do hosting. Link para o código do exemplo.

Anúncios

6 comentários sobre “Web Commands

    • Boas Evandro,

      Como o “core” é totalmente “plugável”, ele te permite somente incluir o que é necessário. Mas isso não quer dizer que com os controllers não dê para fazer um bom trabalho. Acredito que com algum trabalho e customização você consiga fazer algo dinâmico, pois o MVC possui bastante pontos de estensão.

  1. Pingback: Validação de Comandos | Israel Aece
  2. Boa tarde Israel, acompanho seu blog há algum tempo e sempre achei muita coisa interessante aqui. Parabéns pelo blog!

    Sobre essa abordagem de webcommands, eu achei muito interessante e fiz algumas brincadeiras tanto com ASP.NET Core e WebApi (.net 4.6.1), tudo funcionou bem, a unica diferença é que eu usei o MediatR para gerenciar os commands/handlers.

    Fiquei apenas com dúvida em relação há documentação da “api” utilizado o Swagger. Para uma api padrão, o Swagger consegue mapear automaticamente as controllers, métodos, etc. Com essa nova abordagem o Swagger não saberia identificar os commands. Você também sentiu essa dificuldade? Como fez para documentar as apis?

    Abraços!

    • Boas Wellington,

      Infelizmente não combinei o Swagger com esta implementação. Será que não há como customizar a documentação para usar em conjunto? Vou ver se dou uma olhada….

      • Boa tarde Israel,

        Eu tentei customizar o Swagger para ele entender os commands, mas achei um pouco trabalhoso tendo em vista que ele é todo baseado em Reflection, usa muito MethodInfo, já os commands não tem métodos, no máximo um construtor para receber os parâmetros de entrada. Tentei alterar o Swagger para usar ConstructorInfo mas no fim achei que era muito trabalho pra pouco benefício, pois com o Postman também consigo documentar a api, de forma mais manual mas não deixa nada a desejar, e se você tiver um servidor de homologação para a api também é possível usar o Newman (também do Postman) para criar testes de integração e testar as chamadas da api.

        Abraços!

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s