Anincubator

Qué-es-SignalR-Portada.png
green-bar-for-posts

¿Qué es SignalR?

25 de Junio 2021

Tecnología

¿Eres desarrollador web o escribes software de IoT (Internet of Things) o El Internet de las Cosas? Si es así, sabrás que muchos proyectos de desarrollo web y de IoT en estos días requieren la capacidad de establecer una conexión persistente entre un cliente y un servidor sin tener que seguir enviando solicitudes repetidas del cliente. Como también sabrás, esta funcionalidad puede ser difícil de implementar.

Sin embargo, sí puedes crear tu aplicación del lado del servidor en ASP.NET Core, hay una manera de facilitar todo este proceso. Hay una biblioteca llamada SignalR. De esto es de lo que vamos a hablar hoy en este post . Además de hacer todo el trabajo pesado por ti, la biblioteca abstrae todos los detalles complejos de implementación, por lo que tu código se puede hacer extremadamente simple.

green-bar-for-posts

¿Qué es SignalR?

ASP.NET Core SignalR es una biblioteca de código abierto que simplifica la adición de funcionalidad web en tiempo real a las aplicaciones. La funcionalidad web en tiempo real permite que el código del lado del servidor envíe contenido a los clientes al instante.

green-bar-for-posts

Candidatos para SignalR:

Aplicaciones que requieren actualizaciones de alta frecuencia del servidor. Algunos ejemplos son los juegos, las redes sociales, la votación, las subastas, los mapas y las aplicaciones de GPS.

Paneles y aplicaciones de monitorización. Los ejemplos incluyen paneles de la empresa, actualizaciones de ventas instantáneas o alertas de viaje.

Aplicaciones colaborativas. Las aplicaciones de pizarra y el software para reuniones de equipo son ejemplos de aplicaciones colaborativas.

Aplicaciones que requieren notificaciones. Las redes sociales, el correo electrónico, el chat, los juegos, las alertas de viaje y muchas otras aplicaciones que usan notificaciones.

SignalR proporciona una API para crear llamadas a procedimientos remotos (RPC) de servidor a cliente. Las RPC llaman a funciones de JavaScript en clientes desde el código .NET Core del lado del servidor.

Estas son algunas características de SignalR para ASP.NET Core:

Maneja la gestión de conexiones automáticamente.

Envía mensajes a todos los clientes conectados simultáneamente. Por ejemplo, una sala de chat.

Envía mensajes a clientes específicos o grupos de clientes. 

Escalas para manejar el aumento del tráfico.

La fuente está alojada en un repositorio de SignalR en GitHub.

green-bar-for-posts

Transportes

SignalR admite las siguientes técnicas para manejar la comunicación en tiempo real (en orden de reserva):

WebSockets

Eventos enviados por el servidor

Sondeo largo

SignalR elige automáticamente el mejor método de transporte que está dentro de las capacidades del servidor y el cliente.

green-bar-for-posts

Hubs

SignalR usa concentradores o hubs para comunicarse entre clientes y servidores.

Un concentrador es una canalización de alto nivel que permite a un cliente y un servidor llamar a métodos entre sí. SignalR maneja el envío a través de los límites de la máquina automáticamente, lo que permite a los clientes llamar a métodos en el servidor y viceversa. Puede pasar parámetros fuertemente tipados a métodos, lo que habilita el enlace de modelos. 

SignalR proporciona dos protocolos de concentrador integrados: un protocolo de texto basado en JSON y un protocolo binario basado en MessagePack. Este último generalmente crea mensajes más pequeños en comparación con JSON. Los navegadores más antiguos deben admitir XHR nivel 2 para proporcionar compatibilidad con el protocolo MessagePack.

Los concentradores llaman al código del lado del cliente enviando mensajes que contienen el nombre y los parámetros del método del lado del cliente. Los objetos enviados como parámetros de método se deserializan mediante el protocolo configurado. El cliente intenta hacer coincidir el nombre con un método en el código del lado del cliente. Cuando el cliente encuentra una coincidencia, llama al método y le pasa los datos de los parámetros des-serializados.

green-bar-for-posts

Conclusión

Cuando se usa el Internet como medio de enlace entre aplicaciones cliente y los servidores que les comparten contenido, no se tiene una comunicación constante y con velocidad garantizada como en las redes de área local. SignalR busca, dinámicamente, el método más rápido para que el servidor pueda enviar información actualizada a las aplicaciones que la requieren sin crearle complicaciones a los desarrolladores de dichas aplicaciones y a los desarrolladores del back-end. Es particularmente relevante en situaciones donde el servicio de Internet no es particularmente ágil.

Esto se cerrará en 0 segundos