25
Introducción a SignalR Diego Juez Lasarte /in/diegojuez @Diego_juez Informática en Acción

Introduccion SignalR

Embed Size (px)

Citation preview

Introducción a SignalR

Diego Juez Lasarte

/in/diegojuez

@Diego_juez

Informática en Acción

¿Que es SignalR?

1. Librería para desarrolladores ASP.NET que hace el desarrollo de funcionalidad en tiempo real fácil.

2. SignalR permite la comunicación bidireccional entre el servidor y el cliente

3. Ahora el servidor puede hacer “push” del contenido en cuanto esta disponible

4. Soporta WebSockets y se apoya en otras técnicas para dar soporte a viejos navegadores

¿Para que SignalR?Mezclar internet, asincronía, y múltiples usuarios colaborando e interactuando al mismo tiempo

Se puede usar para añadir cualquier tipo de funcionalidad web en tiempo real

Google Docs: si estamos editando un documento online y otro usuario accede al mismo, podemos ver sobre la marcha que ha entrado, e incluso las modificaciones que va realizando sobre el documento.

Pero se peude usar para muchas mas cosas:• Dashboards y aplicaciones de monitorizacion• Actualizaciones de progreso de un proceso• …

Chat Facebook: pareciendo los mensajes tecleados por nuestros compañeros de sala como por arte de magia.

Ambos sistemas utilizan el mismo tipo de solución: el envío asíncrono de datos entre servidor y clientes en tiempo real.

Tipos de conexiónes

POOLING

CONEXIÓN PERSISTENTE

LONG POOLING

• Más limpio y eficiente• Utiliza HTTP estándar:

Válido para todo tipo de agentes de usuario

Bastante amigable para proxies, filtros, firewalls

Connections and Hubs

Dos modelos de comunicación con el cliente: Conexión Persistente y Hubs

Conexión Persistente:• Permite acceso a bajo nivel al protocolo de comunicación• Resultara familiar a los usuarios de WCF• Mayor complejidad

Hubs:• Conducto de alto nivel sobre el protocolo de comunicación• Permite llamar al cliente y servidor llamar a metodos del

otro directamente

WebSocket es el transporte ideal para SignalR debido a que es el mejor usohace de la memoria del servidor, tiene la menor latencia y provee mas funcionalidad.

Sin embargo sus requirimientos son los mas restrictivos:• El servidor debe ser Windows 2012 o Windows 8 y usar.NET Framework

4.5

Websockets es capaz de crear una conexión con el servidor y mantenerla abierta de forma continua, aunque requiere que esta tecnología esté disponible tanto en el cliente

Debido a ello, y para asegurar la máxima compatibilidad con los clientes, la mayoria de las veces se usa Long polling

Los protocolos de transporte es que pueden ser sustituidos de forma transparente sin afectar a nuestras aplicaciones

Nuestros sistemas funcionarán exactamente igual sea cual sea el transporte utilizado, lo que permite que éste sea elegido en cada escenario en función de la disponibilidad de las tecnologías en ambos extremos

Transportes

Son el conjunto de tecnologías utilizadas para mantener crear la conexión continua, o al menos la ilusión de su existencia

SignalR es una abstraccion sobre los transportes que son necesarios parahacer comunicacion en tiempo real entre el cliente y el servidor

La conexion se inicia como HTTP y se promociona a WebSocket si es posible

HTML 5 transports

WebSocket

Server Sent Events

Comet transports

Forever Frame (Solo para Internet Explorer).

Ajax long polling

Como se selecciona el transporte mas adecuado:

1.Navegador es Internet Explorer 8 or anterior -> Long Polling.

2.Si JSONP esta configurado->, Long Polling.

3.Si es una conexión cross-domain se usara WebSocket si::•El cliente soporta CORS (Cross-Origin Resource Sharing). •El cliente soporta WebSocket•El servidor soporta WebSocket

Si no se cumplen se usara Long Polling

4.Si JSONP no esta configurado y la conexión no es cross-domain se usara WebSocket si cliente y servidor lo soprotan.

5.Si el cliente o el servidor no soportan WebSocket se usara Server Sent Events.

6.Si Server Sent Events no esta disponible, se intentara Forever Frame.

7.Si falla el intento con Forever Frame entonces se usara Long Polling.

Arquitectura

SignalR ofrece una visión a muy alto nivel de la comunicación entre el servidor y los múltiples clientes que se encuentren a él conectados

Como desarrolladores, trabajaremos sobre una conexión virtualmente siempre abierta

Implementación de servicios con SignalR

• usando “conexiones persistentes”

• usando “hubs”

más bajo nivel

bastante similar a como hacemos utilizando sockets

ofrece una abstracción aún mayor

Entorno web más habitual

SERVIDOR: una aplicación ASP.NET

CLIENTES: páginas o vistas en las que tendremos un motor de scripting

Implementación:

SERVIDOR: crear el servicio utilizando las clases del ensamblado SignalR

CLIENTE: crear el consumidor del servicio utilizando las clases disponibles en la biblioteca de scripts jQuery.SignalR.js

EJEMPLO APLICACIÓN WEB

• Tenemos un servidor, normalmente IIS…• … sobre el que corre ASP.NET…• … con el que está construido el framework

(MVC, Webforms…)…• … en el que desarrollamos nuestras

aplicaciones.

OWIN (Open Web Interface

for .NET)

• OWIN propone una abstracción que permite separar los servidores y hosts donde se ejecutan las aplicaciones .NET, de las aplicaciones en sí mismas

• Una aplicación de servidor escrita con SignalR puede ser alojada con total en: • IIS/ASP.NET, • Un servicio Windows, • Una plataforma basada en

Mono/Apache, siempre que existieran los oportunos adaptadores OWIN.

• Nuestra aplicación sería la misma, independientemente del entorno en el que se ejecute

OWIN (Open Web Interface

for .NET)

EJEMPLO APLICACIÓN

WINFORMS

Próxima cita: 25 Marzo

Introducción a la programación

móvil25 multiplataforma con Xamarin con Rafa

Serna

Más info: http://tresssd.es/inf-acc-2015

Diego Juez Lasarte

Informática en Acción

/in/diegojuez

@Diego_Juez

Introducción a SignalR

Gracias por rellenar

la evaluación