Sei sulla pagina 1di 3

SignalR

SignalR es una biblioteca desarrollada por Damian Edwards y David Fowler, miembros
del equipo de ASP .NET y de hecho el código fuente es Open Source y se encuentra en
GitHub. SignalR forma parte de la familia ASP .NET y es útil para crear aplicaciones que
respondan en tiempo real.

SignalR provee una capa de abstracción sobre algunos de los transportes requeridos para
hacer aplicaciones de tiempo real. Estas aplicaciones empiezan directamente sobre HTTP
pero en caso de que se tenga soporte para Web Sockets, dicha conexión será promovida
a que use Web Sockets. Todas las conexiones son administradas por SignalR y permite
transmitir los cambios a todos los clientes conectados como si fuese una sala de chat o en
caso de que sea necesario podemos notificar a un cliente específico.

La conexión entre el cliente y el servidor es persistida, a diferencia de HTTP en donde se


envía un request y al momento de recibir el response esta se destruye para posteriormente
de cero. La capa de abstracción de SignalR simula esa persistencia a diferencia de las
conexiones hechas con Web Sockets las cuales son verdaderamente persistentes.

La conexión entre el cliente y el servidor es persistida, a diferencia de HTTP en donde se


hace una llamada se destruye y se empieza nuevamente. La capa de abstracción de
SignalR da la sensación de que es persistente y las conexiones de Web Sockets son
verdaderamente persistentes.

(https://blogs.msdn.microsoft.com/aiturralde/2012/08/18/introduccin-a-signalr/)

SignalR ofrece una API para crear llamadas remotas (RPC) desde el servidor a funciones
Javascript existentes en el cliente. No tenemos que encargarnos de gestionar la conexión,
ya que SignalR lo hace automáticamente. Podemos enviar mensajes a un cliente
específico o a todos los conectados al servidor.

SignalR se basará en Websocket cuando esté disponible. Cuando no sea el caso, utilizará
otra tecnología disponible para funcionalidades en tiempo real, como puede ser Server
Sent Requests, Forever Frame o Ajax long polling. En función del navegador en el que
se ejecute la aplicación, se escogerá un método de transporte u otro, pero es un proceso
totalmente transparente para nosotros, sin que sea necesario tener conocimientos de estos
transportes ni de cómo debemos implementar nuestro código en función del navegador
que utilicemos. Para implementar una aplicación SignalR tendremos lo que denominamos
un Hub y un Hub proxy. Un Hub/Hub proxy no es más que un medio que permite al
cliente realizar llamadas a métodos servidor y viceversa, como si esos métodos se
estuvieran llamando en local.

El Hub estará en la parte del servidor, y expondrá los métodos disponibles al cliente. El
Hub proxy estará en el lado del cliente, y expondrá los métodos disponibles al servidor.

(https://blogs.msdn.microsoft.com/esmsdn/2016/02/05/creando-aplicaciones-web-
en-tiempo-real-con-signalr/)

Implementación de servicios con SignalR

SignalR nos ofrece dos fórmulas para trabajar sobre las conexiones que crea con el
servidor:

 usando “conexiones persistentes”, es la de más bajo nivel y proporciona


mecanismos simples para registrar conexiones y desconexiones de clientes y
comunicarse de forma bidireccional con ellos. De hecho, esta forma de crear
servicios es bastante similar a como hacemos utilizando sockets.
 usando “hubs”, que ofrece una abstracción aún mayor, permitiendo la
comunicación entre cliente y servidor de forma casi mágica. Esta es la opción que
convendrá utilizar en la mayoría de ocasiones, por la potencia que aporta y su gran
comodidad de uso.

En cualquiera de los dos casos, y ya centrándonos en el entorno web más habitual, donde
el servidor es una aplicación ASP.NET y los clientes van a ser las páginas o vistas en las
que tendremos un motor de scripting, la implementación de servicios consistirá en:

 en el servidor, crear el servicio (también llamado endpoint) con las


funcionalidades que nos interese, utilizando las clases disponibles en el
ensamblado SignalR.
 en cliente, crear el consumidor del servicio utilizando las clases disponibles en la
biblioteca de scripts jQuery.SignalR.js (o su correspondiente versión
minimizada).
Cada una de las dos fórmulas citadas tiene sus particularidades, por lo que las
estudiaremos mediante el desarrollo de ejemplos independientes en futuros posts de la
serie.

(https://www.variablenotfound.com/2012/01/introduccion-signalr-i-
conceptos.html)

Potrebbero piacerti anche