O ASP.NET SignalR é um framework de comunicação em tempo real que pode ser utilizado para diversas funcionalidades, inclusive para integração de comunicação entre sistemas de diferentes plataformas.
Caso não conheça o ASP.NET SignalR aprenda em detalhes neste artigo e nesta palestra.
O ASP.NET SignalR vem sendo amplamente utilizado em diversos cenários de comunicação em tempo real. Muitas vezes a própria solução Web implementa os Hubs e gerencia o recebimento e distribuição de mensagens.
Existem outros cenários em que é necessário desacoplar o lado server do SignalR da aplicação Web. Muitas vezes a informação a ser distribuída pode vir de outros serviços, outras plataformas e etc. É possível utilizar SignalR nesses casos? Sim, é possível!
O SignalR é implementado seguindo a especificação do OWIN e pode trabalhar em uma aplicação Web ou no modo Self-Host em um Windows Service ou aplicação console.
Proponho um cenário hipotético: Existem N broadcasts sendo distribuídos de diversas aplicações independentes da Microsoft e é necessário que a comunicação seja transmitida em tempo real para outras plataformas (Web, Desktop, Mobile). É necessário utilizar uma solução única para atender esta demanda e com baixo esforço de desenvolvimento.
Este cenário é muito similar ao da imagem utilizada no início do artigo e segue o fluxo a seguir:
- O Windows Service implementa uma forma de receber a comunicação vinda das demais aplicações.
- Os Hubs do SignalR no Windows Service distribuem as informações recebidas à todos os clientes conectados.
- Os clientes conectados recebem a comunicação em tempo real e se necessário podem encaminhar novas informações para o Windows Service.
- O Windows Service recebe as informações de um cliente e redistribui para todos novamente (como num chat).
Desenvolvi a solução deste cenário utilizando um Windows Service gerando dados de tempo, dados aleatórios de valores e trabalhando com uma comunicação via chat.
A solução está publicada em meu GitHub
- Para testes de desenvolvimento não é necessário instalar o serviço (Windows Service), basta setar os dois projetos para iniciarem juntos e realizar um Debug.
- É possível implementar autenticação para transmitir a comunicação apenas para clientes com a devida permissão.
- É possível implementar algum Retry Pattern como o Polly caso haja alguma falha na entrega da comunicação.
Se você estiver interessado em conhecer mais e aprender como desenvolver aplicações Web com arquitetura baseada em DDD, aplicando os princípios SOLID, diversos Design Patterns e escrevendo testes de unidade inscreva-se em meu curso:
Vamos continuar a troca de experiências, deixe seu comentário abaixo, se gostou e concorda com o artigo compartilhe com seus colegas para transmitirmos o conhecimento para o máximo de pessoas possíveis.