30
Aplicaciones Real- Time con SignalR Rodolfo Finochietti MVP ASP.NET/IIS Lagash Systems

Aplicaciones Real-Time con SignalR

Embed Size (px)

Citation preview

Page 1: Aplicaciones Real-Time con SignalR

Aplicaciones Real-Timecon SignalR

Rodolfo FinochiettiMVP ASP.NET/IISLagash Systems

Page 2: Aplicaciones Real-Time con SignalR

Agenda

• ¿Por que necesitamos aplicaciones real-time?

• ¿Que tecnologias tenemos disponibles para desarrollar aplicaciones real-time?

• SignalR• Connections y Hubs• Clients

• Preguntas

Page 3: Aplicaciones Real-Time con SignalR

¿Por que necesitamos aplicaciones real-time?

Page 4: Aplicaciones Real-Time con SignalR

¡Los usuarios quieren la información AHORA!

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

6

Page 5: Aplicaciones Real-Time con SignalR

¿Que tecnologias tenemos hoy?

Page 6: Aplicaciones Real-Time con SignalR

HTTP no esta preparado…

Nunca se diseño para comunicaciones real-timeLa web es request-responseLa web es stateless

Page 7: Aplicaciones Real-Time con 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 8: Aplicaciones Real-Time con 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 interval

Client

Server

Page 9: Aplicaciones Real-Time con 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 10: Aplicaciones Real-Time con SignalR

Server-Sent Events (SSE)

Es un standard HTML5 para manejo de eventos desde el Server al Cliente

Se utiliza el objeto EventSource en JavaScript

Page 11: Aplicaciones Real-Time con SignalR

HTML5 WebsocketsExtensión de HTTP

Provee sockets sobre HTTP

Full-duplex

Funciona a través de proxies

No todos los proxy servers lo soportan

No todos los webserver lo soportan

No todos los browsers lo soportan

¡Son sockets!

Page 12: Aplicaciones Real-Time con SignalR

En definitiva:¡Muchas opciones!

Long polling Periodic polling Forever Frame Server-Sent Events HTML5 WebSockets

Page 13: Aplicaciones Real-Time con SignalR

R

¡SignalR al rescate!

Page 14: Aplicaciones Real-Time con 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 15: Aplicaciones Real-Time con SignalR

SignalR Fallback

Long Polling

Forever Frames

Server Sent Events

Web Sockets

Page 16: Aplicaciones Real-Time con SignalR

¿Como lo instalo?

¡NuGet!

install-package Microsoft.AspNet.SignalR

Page 17: Aplicaciones Real-Time con SignalR

Demo: Hello SignalR

Page 18: Aplicaciones Real-Time con SignalR

¿Que paso?

El servidor hizo broadcasting del mensaje cada pocos segundos

El cliente recibio los mensajes ¡El codigo para hacer esto esto es facil! No hay polling (por lo menos no en el codigo)

Page 19: Aplicaciones Real-Time con SignalR

Dos modelos de conexión

PersistentConnection

Limitado a enviar mensajesEl usuario define el “protocolo”

HubAbstracción sobre PersistentConnectionSe pueden enviar mensajes y llamar a métodosSignalR define el protocolo

Page 20: Aplicaciones Real-Time con SignalR

Demo: Connections

Page 21: Aplicaciones Real-Time con SignalR

Demo: Knockout.js & SignalR

Page 22: Aplicaciones Real-Time con SignalR

Demo: Hubs

Page 23: Aplicaciones Real-Time con 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 24: Aplicaciones Real-Time con SignalR

Clientes

En el servidorSe puede hostear en cualquier aplicacion ASP.NETEn el clienteJavaScriptPero hay mas…

Page 25: Aplicaciones Real-Time con SignalR

Clientes

En el servidor“SelfHost” (Microsoft.AspNet.SignalR.SelfHost)Windows Azure

En el clienteJavaScript (Microsoft.AspNet.SignalR.JS)Cualquier aplicacion .NET (Microsoft.AspNet.SignalR.Client)Cualquier dispositivo Windows PhoneiOSAndroid (https://github.com/SignalR/java-client)

Page 26: Aplicaciones Real-Time con SignalR

Microsoft /web

®

Backplane

SignalR BackplanesBalanceo de carga a través de un mecanismo de transporte común

Load B

ala

nce

r

Page 27: Aplicaciones Real-Time con SignalR

Resumen ¡3 en uno!

Conexiones “persistentes” entre cliente y servidor sobre el mejor transporte

Abtrae el modelo de poolling subyasente Provee un solo modelo de programacion

Connections & Hubs Soporte para muchos tipos de clientes

Page 28: Aplicaciones Real-Time con SignalR

¿Preguntas?

Page 30: Aplicaciones Real-Time con SignalR

¡Gracias!