Com o ASP.NET SignalR passamos a ter o poder da comunicação em real-time através de mecanismos de push. O SignalR utiliza um conjunto de tecnologias e técnicas para permitir que o servidor envie informação para um ou mais clientes. Estes clientes podem ser tão diferentes quanto um cliente HTML + Javascript, uma aplicação WPF ou mesmo uma app a ser executada no iOS.
Vamos explorar estas potencialidades em um conjunto de exemplos práticos onde poderemos perceber:
Quais as técnicas e tecnologias que suportam o SignalR;
Quão simples é criar um cliente capaz de fazer comunicação em real-time;
Quais plataformas já suportam o SignalR;
Além disso poderemos discutir quais as áreas de aplicabilidade desta tecnologia.
1. ASP.NET SignalR - Comunicação em
real-time simples e para todo mundo
Glauco Godoi
http://netponto.org38ª Reunião Presencial - 20/04/2013
2. Glauco Godoi
- Senior Solution Architect @ Truewind-Chiron
- Foco em desenvolvimento web na plataforma
Microsoft;
- glauco.godoi@truewind-chiron.com
- Linked-in: pt.linkedin.com/in/glaucorgodoi/
3. ASP.Net SignalR – simple real-time
Agenda
- Comunicação em tempo real
- SignalR
- Utilização básica do SignalR
- Clientes disponíveis
- Q & A
4. ASP.Net SignalR – simple real-time
Comunicação em tempo real
- O que é ?
- Onde poderia utilizar ?
- Como podemos implementar ?
Jogos
Aplicações de chat
Logging, exception capturing
Real-time charting
Aplicações colaborativas
Banca
5. ASP.Net SignalR – simple real-time
- Pedidos HTTP
No mundo web a funcionar sobre HTTP estamos
presos ao paradigma RR (Request X Respose)
Response
Request
6. ASP.Net SignalR – simple real-time
- Simulando o real-time
Polling
Já tem dados? Não! Já tem dados? Não! Já tem dados ? Sim!
Javascript
<meta http-equiv="refresh" content="5" >
7. ASP.Net SignalR – simple real-time
- Simulando o real-time
Long polling
Javascript
Já tem dados? ….. Não! Já tem dados ? …… tu-tu-tu-tu-tu
8. ASP.Net SignalR – simple real-time
- Simulando o real-time
Forever frame
Javascript injectado directamente na página através de um
iframe cujo documento nunca termina
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<body>
<iframe src="myservice.ashx"></iframe>
</body>
</html>
9. ASP.Net SignalR – simple real-time
- Simulando o real-time
Server sent events
Tecnologia padronizada pelo W3C no HTML5. Exige um
pedido de conexão inicial por parte do cliente.
http://dev.w3.org/html5/eventsource/
Não é suportado nativamente pelo IE
10. ASP.Net SignalR – simple real-time
Usage share of desktop browsers for March 2013
Source Chrome
Internet
Explorer
Firefox Safari
Opera Other
StatCounter 38.07% 29.30% 20.87% 8.50% 1.17% 2.09%
Wikimedia 44.06% 22.08% 18.17% 3.24% 3.38% 9.07 %
W3Counter 30.30% 24.60% 19.30% 16.30% 2.30% 7.20%
NetApplicati
ons
16.45% 55.83% 20.21% 5.31% 1.74% 0.20%
Clicky 35.13% 33.38% 21.18% 8.92% 1.15% n/a%
11. ASP.Net SignalR – simple real-time
- Simulando o real-time
Websockets
Faz parte do HTML5. Permite comunicação bidireccional.
Pode ser consumido por browsers ou outros clientes.
Cria uma conexão persistente.
É uma extensão ao protocolo HTTP: ws e wss
13. ASP.Net SignalR – simple real-time
- SignalR
- Fachada sobre as técnicas e tecnologias
- Não é um projecto oficial da MS—-
- Faz parte do ASP.NET
- Licença do tipo MIT Apache 2.0 License
- Disponível através do nuget
- Dois modelos de conexão: Persistent connection & Hubs
16. ASP.Net SignalR – simple real-time
Resumo
• Comunicação real-time é uma tendência crescente;
• Existem várias formas de implementa-la. Cada uma delas com vantagens e desvantagens;
• SignalR é uma opção interessante pois simplifica o trabalho do developer;
• SignalR não é a única opção. Socket.IO e Node.js também fazem um trabalho muito bom
porém SignalR é uma escolha mais “simples” se todo o stack aplicacional for Microsoft.
• Testem sempre em vários browsers / clientes