Introducción a ASP.NET Core SignalR

¿Qué es SignalR?

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

Buenos candidatos para SignalR:

  • Aplicaciones que requieren actualizaciones desde el servidor con mucha frecuencia. Algunos ejemplos son juegos, redes sociales, aplicaciones de votación, subastas, mapas y GPS.
  • Paneles y aplicaciones de supervisión. Los ejemplos incluyen paneles empresariales, actualizaciones de venta instantáneas o alertas de viaje.
  • Aplicaciones de colaboración. Las aplicaciones de pizarra y el software de reuniones de equipo son ejemplos de aplicaciones de colaboración.
  • Aplicaciones que requieren notificaciones. Redes sociales, correo electrónico, chat, juegos, alertas de viaje y muchas otras aplicaciones utilizan notificaciones.

SignalR proporciona una API para crear llamadas a procedimientos remotos (RPC) de servidor a cliente. Las RPC invocan funciones en los clientes desde el código .NET Core del lado del servidor. Hay varias plataformas compatibles, cada una con su respectivo SDK cliente. Por este motivo, el lenguaje de programación que la llamada RPC invoca varía.

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

  • Controla automáticamente la administración de conexiones.
  • Envía mensajes a todos los clientes conectados simultáneamente. Por ejemplo, un salón de chat.
  • Envía mensajes a clientes o grupos de clientes específicos.
  • Escala para controlar el aumento del tráfico.
  • SignalR Protocolo del concentrador

La fuente está alojada en un SignalR en GitHub.

Transportes

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

  • 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 del cliente.

Concentradores

SignalR usa concentradores para comunicarse entre clientes y servidores.

Con "centro" nos referimos a una canalización de alto nivel que permite que un cliente y un servidor llamen a métodos entre sí. SignalR gestiona el envío a través de los límites de la máquina de forma automática, permitiendo a los clientes llamar a métodos en el servidor y viceversa. Puede pasar parámetros fuertemente tipados a métodos, lo que permite 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. MessagePack generalmente crea mensajes más pequeños en comparación con JSON. Los exploradores más antiguos deben admitir el nivel 2 de XHR para proporcionar compatibilidad con el protocolo MessagePack.

Los concentradores llaman al código del lado cliente mediante el envío de mensajes que contienen el nombre y los parámetros del método del lado 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 cliente. Cuando el cliente encuentra una coincidencia, llama al método y le pasa los datos de parámetros deserializados.

Exploradores que no admiten ECMAScript 6 (ES6)

SignalR tiene como destino ES6. Para los exploradores que no admiten ES6, transpile la biblioteca a ES5. Para obtener más información, consulte Introducción con ES6: transpilación de ES6 a ES5 con Traceur y Babel.

Recursos adicionales