Escalar aplicaciones de ASP.NET Core SignalR con el servicio Azure SignalR

Desarrollo de aplicaciones SignalR

SignalR está disponible actualmente en dos versiones para su uso con aplicaciones web:

  • ASP.NET SignalR
  • new ASP.NET Core SignalR

ASP.NET Core SignalR es una reescritura de la versión anterior. Como resultado, ASP.NET Core SignalR no es compatible con versiones anteriores de SignalR. Las API y los comportamientos son diferentes. Azure SignalR Service admite ambas versiones.

Azure SignalR Service le permite hospedar la aplicación web real en varias plataformas (Windows, Linux y macOS) App de Azure Service, IIS, Nginx, Apache, Docker. También puede utilizar un hospedaje autosuficiente en su propio proceso.

Azure SignalR Service es la mejor opción si los objetivos de la aplicación incluyen:

  • compatibilidad con la funcionalidad más reciente para actualizar clientes web con actualizaciones de contenido en tiempo real,
  • ejecutar en varias plataformas (Azure, Windows, Linux y macOS)
  • hospedaje en entornos diferentes

Por qué no implementar SignalR usted mismo

Todavía es un enfoque válido para implementar su propia aplicación web de Azure que admita SignalR como componente de back-end en la aplicación web general.

Una de las principales razones para usar Azure SignalR Service es su sencillez. Con Azure SignalR Service, no es necesario encargarse de problemas como el rendimiento, la escalabilidad y la disponibilidad. Estos problemas quedarán bajo su control con un contrato de nivel de servicio del 99,9 %.

Además, WebSockets suele ser la técnica preferida para admitir las actualizaciones de contenido en tiempo real. Sin embargo, el equilibrio de carga de un gran número de conexiones persistentes de WebSocket se convierte en un problema complicado de resolver cuando se escala. Uso de soluciones comunes: equilibrio de carga DNS, equilibradores de carga de hardware y equilibrio de carga de software. Azure SignalR Service controla este problema automáticamente.

Para ASP.NET Core SignalR, otro motivo podría ser que no tenga requisitos para hospedar realmente una aplicación web en absoluto. La lógica de la aplicación web puede usar la informática sin servidor. Por ejemplo, quizás el código solo se hospede y ejecuta a petición con desencadenadores de Azure Functions. Este escenario puede ser difícil porque el código solo se ejecuta a petición y no mantiene conexiones largas con clientes. Azure SignalR Service puede encargarse de esta situación, ya que el servicio ya administra las conexiones por usted. Para más información, consulte información general sobre cómo usar SignalR Service con Azure Functions. Dado que ASP.NET SignalR usa un protocolo diferente, este modo sin servidor no se admite para ASP.NET SignalR.

Cómo se escala

Es habitual escalar SignalR con SQL Server, Azure Service Bus o Azure Cache for Redis. Azure SignalR Service controla el enfoque de escalado por usted. El rendimiento y el costo es comparable a estos métodos, sin la complejidad de trabajar con estos otros servicios. Lo único que debe hacer es actualizar el número de unidades del servicio. Cada unidad admite hasta 1000 conexiones de cliente.

Pasos siguientes