23
SignalR Mariano Sánchez Lagash Systems [email protected]

Introducción a SignalR

Embed Size (px)

Citation preview

Page 1: Introducción a SignalR

SignalR

Mariano SánchezLagash [email protected]

Page 2: Introducción a SignalR

¿Por que necesitamos aplicaciones real-time?

Page 3: Introducción a SignalR
Page 4: Introducción a SignalR
Page 5: Introducción a SignalR

¡Los usuarios quieren la ultima informacion AHORA!

Twitter – live searches/updates Stock streamersAuctionsLive scoresReal-time notificationsInteractive gamesCollaborative appsLive user analytics… 6

Page 6: Introducción a SignalR

¿Que tecnologias tenemos hoy?

Page 7: Introducción a SignalR

HTTP no esta preparado…Nunca se diseño para comunicaciones real-timeLa web es request-responseLa web es stateless

Para solucionar esto se invento HTML5 WebSockets

Page 8: Introducción a SignalR

HTTP/1.1 200 OKContent-Type: text/plainTransfer-Encoding: chunked

Forever Frame

– El server le dice al cliente que el response es chuncked– El cliente mantiene la coneccion abierta hasta que el servidor

la cierra– El servidor envia los datos al cliente seguido de un \0– Este proceso consume threads del servidor

Client<script>eval("... ")</script>\0<script>eval("... ")</script>\0

Server

Page 9: Introducción a SignalR

Periodic polling

– Cada cierto tiempo el cliente pregunta si hay nuevos datos al servidor utilizando Ajax

– El tiempo de latencia minimo esta determiando por el “polling interval”

– Desperdicia ancho de banda y latencia

Polling intervalClient

Server

Page 10: Introducción a SignalR

Long polling

– El cliente pregunta pero el servidor no responde hasta que tenga datos nuevos para enviar

– El cliente pregunta de nuevo cuando los datos son recibidos o despues de que hay una time out en al coneccion

– Consume threads y conexiones del servidor

Client

Server

Page 11: Introducción a SignalR

HTML5 WebsocketsExtension de HTTPProvee sockets sobre HTTPFull-duplexFunciona a travez de proxies

Todavia es un draft…No todos los proxy servers lo soportanNo todos los webserver lo soportanNo todos los browsers lo soportan¡Son sockets!

Page 12: Introducción a SignalR

En definitiva:¡Muchas opciones!

• Forever Frame• Periodic polling• Long polling• HTML5 WebSockets

Page 13: Introducción a SignalR

SignalR

¡3 en uno!• Conexiones “persistentes” entre cliente y

servidor sobre el mejor transporte• Abstrae el modelo de poolling subyasente• Provee un solo modelo de programacion

Page 14: Introducción a SignalR

DEMO

Hello SignalR

Page 15: Introducción a SignalR

¿Que paso?• El servidor hizo broadcasting del mensaje enviado• Los clientes recibieron los mensajes• ¡El codigo para todo esto es facil!• No hay polling (por lo menos no en el codigo)

Page 16: Introducción a SignalR

Dos modelos de conexionPersistentConnectionComunica 1..N clientesEs un IHttpHandlerRequiere que se defina una rutaLimitado a enviar mensajesEl usuario define el “protocolo”

HubsComunica 1..N clientesAbstraccion sobre PersistentConnectionLas rutas se mapean automaticamente (/signalr/hubs)Se pueden enviar mensajes y llamar a metodosSignalR define el protocolo

Page 17: Introducción a SignalR

Hubs• Los metodos de un Hub se pueden llamar

desde el cliente• Los metodos de un cliente se pueden llamar

desde el servidor– Se pueden llamar a clientes individuales– Se pueden llamar todos clientes– Se pueden llamar a grupos de clientes

Page 18: Introducción a SignalR

Demo

Hubs

Page 19: Introducción a SignalR

Clients

Page 20: Introducción a SignalR

ClientesEn el servidorSe puede hostear en cualquier aplicacion ASP.NET

En el clienteJavaScript

Pero hay mas…

Page 21: Introducción a SignalR

Clientes

En el servidor“SelfHost”Windows Azure

En el clienteJavaScriptCualquier aplicacion .NETCualquier dispositivo Windows PhoneiOSAndroid

Page 22: Introducción a SignalR

Preguntas?

Page 23: Introducción a SignalR

¡Gracias!