Introduccion SignalR
-
Upload
diego-juez-lasarte -
Category
Software
-
view
198 -
download
0
Transcript of Introduccion SignalR
¿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.
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
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.
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
• 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)