AYUDA .NET

Signalr C# (Cómo funciona para desarrolladores)

Actualizado 14 de noviembre, 2023
Compartir:

La web moderna se nutre de la interactividad y la información en tiempo real. Cuando se construyen aplicaciones responsivas, la funcionalidad web en tiempo real es imprescindible. Aquí es donde brilla SignalR. ASP.NET Core SignalR es una biblioteca que hace que añadir funcionalidad web en tiempo real a tus aplicaciones sea más sencillo de lo que imaginas.

En este tutorial, nos embarcaremos en un viaje a través de los fundamentos y matices de SignalR. Sumerjámonos!

Introducción a SignalR en ASP.NET Core

ASP.NET Core SignalR proporciona una API para crear funcionalidades web en tiempo real utilizando WebSockets y otras tecnologías, como eventos enviados por el servidor. No se limita únicamente a ASP.NET Core. Puede utilizar SignalR con varios clientes, como un navegador o una aplicación móvil, garantizando que los clientes conectados se actualicen al instante.

Configuración del entorno de desarrollo

Para empezar, necesitarás:

Construir el Hub SignalR

En esencia, SignalR gira en torno a un concentrador SignalR, un punto central en el que interactúan el cliente y el servidor.

Cree un nuevo proyecto ASP.NET Core. Ahora, añade una nueva clase y nómbrala ChatHub. Esto actuará como nuestro centro SignalR.

using Microsoft.AspNetCore.SignalR;

public class ChatHub : Hub
{
    public async Task SendMessage(string user, string message)
    {
        await Clients.All.SendAsync("ReceiveMessage", user, message);
    }
}
using Microsoft.AspNetCore.SignalR;

public class ChatHub : Hub
{
    public async Task SendMessage(string user, string message)
    {
        await Clients.All.SendAsync("ReceiveMessage", user, message);
    }
}
Imports Microsoft.AspNetCore.SignalR

Public Class ChatHub
	Inherits Hub

	Public Async Function SendMessage(ByVal user As String, ByVal message As String) As Task
		Await Clients.All.SendAsync("ReceiveMessage", user, message)
	End Function
End Class
VB   C#

En la clase pública Startup, vamos a integrar nuestro hub.

public void ConfigureServices(IServiceCollection services)
{
    services.AddSignalR();
}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapHub<ChatHub>("/chatHub");
    });
}
public void ConfigureServices(IServiceCollection services)
{
    services.AddSignalR();
}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapHub<ChatHub>("/chatHub");
    });
}
Public Sub ConfigureServices(ByVal services As IServiceCollection)
	services.AddSignalR()
End Sub

Public Sub Configure(ByVal app As IApplicationBuilder, ByVal env As IWebHostEnvironment)
	app.UseEndpoints(Sub(endpoints)
		endpoints.MapHub(Of ChatHub)("/chatHub")
	End Sub)
End Sub
VB   C#

Implementación en el lado del cliente

SignalR es versátil. Aunque este tutorial se centra en ASP.NET Core y la biblioteca cliente JavaScript, SignalR admite varios clientes, desde .NET hasta Java.

Uso de la biblioteca cliente SignalR

La biblioteca de cliente SignalR permite que el código del lado del cliente se conecte y se comunique directamente con el lado del servidor. Para nuestro ejemplo, vamos a utilizar JavaScript.

En primer lugar, añada la biblioteca cliente JavaScript de SignalR:

<script src="https://cdn.jsdelivr.net/npm/@microsoft/signalr@3.1.8/dist/browser/signalr.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@microsoft/signalr@3.1.8/dist/browser/signalr.js"></script>
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'<script src="https://cdn.jsdelivr.net/npm/@microsoft/signalr@3.1.8/dist/browser/signalr.js"></script>
VB   C#

Ahora, puedes conectarte al concentrador:

const connection = new signalR.HubConnectionBuilder()
    .withUrl("/chatHub")
    .build();

connection.start();

connection.on("ReceiveMessage", (user, message) => {
    console.log(`${user} says: ${message}`);
});
const connection = new signalR.HubConnectionBuilder()
    .withUrl("/chatHub")
    .build();

connection.start();

connection.on("ReceiveMessage", (user, message) => {
    console.log(`${user} says: ${message}`);
});
const connection = (New signalR.HubConnectionBuilder()).withUrl("/chatHub").build()

connection.start()

connection.on("ReceiveMessage", Sub(user, message)
	console.log(`${user} says:= ${message}`)
End Sub)
VB   C#

Este sencillo código del lado del cliente se conecta al concentrador y escucha los mensajes que se emiten.

Funcionalidad en tiempo real en acción

Envío de mensajes

Utilizando nuestros anteriores fragmentos de código del lado del cliente y del lado del servidor, el envío de mensajes es sencillo. Tanto el servidor como el cliente pueden iniciar la comunicación.

Del lado del servidor:

await Clients.All.SendAsync("ReceiveMessage", "Server", "Hello from server!");
await Clients.All.SendAsync("ReceiveMessage", "Server", "Hello from server!");
Await Clients.All.SendAsync("ReceiveMessage", "Server", "Hello from server!")
VB   C#

Y de cliente:

connection.send("SendMessage", "Client", "Hello from client!");
connection.send("SendMessage", "Client", "Hello from client!");
connection.send("SendMessage", "Client", "Hello from client!")
VB   C#

Comunicación avanzada en tiempo real

ASP.NET Core SignalR ofrece funciones avanzadas de comunicación en tiempo real:

  1. Agrupación de conexiones: Segmente los clientes conectados en grupos, emitiendo mensajes a segmentos específicos.
  2. Gestión de desconexiones: Gestiona automáticamente las conexiones y desconexiones de los clientes.
  3. Protocolo binario: Aunque SignalR utiliza por defecto un protocolo basado en texto, también admite un protocolo binario.

SignalR con el servicio Azure SignalR

Para una funcionalidad escalable en tiempo real, integre Servicio Azure SignalR. Este servicio totalmente gestionado admite un gran número de conexiones simultáneas, por lo que es ideal para aplicaciones de alta demanda.

Integración del servicio Azure SignalR:

  1. Instale el SDK Azure SignalR.
  2. Utilice Azure Service Bus para el soporte de backplane.
  3. Ajuste la clase pública Startup para utilizar Azure SignalR.
public void ConfigureServices(IServiceCollection services)
{
    services.AddSignalR().AddAzureSignalR();
}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    app.UseAzureSignalR(routes =>
    {
        routes.MapHub<ChatHub>("/chatHub");
    });
}
public void ConfigureServices(IServiceCollection services)
{
    services.AddSignalR().AddAzureSignalR();
}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    app.UseAzureSignalR(routes =>
    {
        routes.MapHub<ChatHub>("/chatHub");
    });
}
Public Sub ConfigureServices(ByVal services As IServiceCollection)
	services.AddSignalR().AddAzureSignalR()
End Sub

Public Sub Configure(ByVal app As IApplicationBuilder, ByVal env As IWebHostEnvironment)
	app.UseAzureSignalR(Sub(routes)
		routes.MapHub(Of ChatHub)("/chatHub")
	End Sub)
End Sub
VB   C#

Iron Suite Mejora SignalR con herramientas .NET de primera calidad

Aunque ASP.NET Core SignalR proporciona una base excepcional para la funcionalidad web en tiempo real, los desarrolladores suelen buscar herramientas para mejorar la experiencia y la funcionalidad generales. Ahí es donde Iron Suite entra en escena.

Iron Suite es un conjunto de bibliotecas .NET de primera calidad, diseñadas para potenciar sus aplicaciones ASP.NET Core, incluidas las que utilizan SignalR. Cada producto de esta suite ofrece funciones únicas, lo que garantiza una experiencia de aplicación más rica. Profundicemos en las ofertas:

IronPDF

Signalr C# (Cómo funciona para los desarrolladores) Figura 1

IronPDF le permite generar, editar y leer archivos PDF dentro de sus aplicaciones .NET. Imagine integrar SignalR en un escenario en el que un equipo colabora en un documento en tiempo real. A medida que se realizan cambios, el documento se puede convertir en un PDF sobre la marcha, con actualizaciones enviadas a todos los clientes conectados sin problemas. La funcionalidad en tiempo real de SignalR combinada con las capacidades de IronPDF podría revolucionar las herramientas de colaboración.

IronXL

Signalr C# (Cómo funciona para los desarrolladores) Figura 2

Cuando se trata de trabajar con hojas de cálculo Excel, IronXL es un campeón. En un entorno empresarial, las hojas de cálculo desempeñan un papel fundamental. La incorporación de SignalR junto con IronXL significa que los equipos financieros podrían trabajar en las hojas de presupuesto en tiempo real, siendo testigos de los cambios a medida que se producen. Imagine un escenario en el que las entradas de datos de varios departamentos fluyen hacia una hoja Excel centralizada, con actualizaciones en tiempo real para todas las partes interesadas. La fusión de comunicación en tiempo real y gestión dinámica de hojas de cálculo se hace realidad con esta combinación.

IronOCR

Signalr C# (Cómo funciona para los desarrolladores) Figura 3

Reconocimiento óptico de caracteres (OCR) se ha convertido en un elemento básico de las aplicaciones modernas. IronOCR permite a los desarrolladores .NET extraer texto de imágenes y documentos. Combinar esto con la funcionalidad en tiempo real de SignalR puede cambiar las reglas del juego. Consideremos una plataforma en la que los usuarios suben imágenes que contienen datos textuales. SignalR podría utilizarse para notificar a los usuarios en tiempo real una vez que IronOCR procese las imágenes, haciendo que la extracción de datos sea interactiva e instantánea.

IronBarcode

Signalr C# (Cómo funciona para los desarrolladores) Figura 4

El código de barras forma parte integral de la gestión de inventarios, los sistemas de venta de entradas, etc. IronBarcode simplifica la creación y lectura de códigos de barras. Ahora, piense en integrar esto con SignalR en un sistema de gestión de almacenes. A medida que se escanean los artículos, el inventario se actualiza en tiempo real, notificando a los clientes conectados los niveles de existencias y garantizando una operación logística fluida.

Conclusión

Signalr C# (Cómo funciona para los desarrolladores) Figura 5

La fusión de ASP.NET Core SignalR con las potentes herramientas de Iron Suite promete una experiencia elevada tanto para los desarrolladores como para los usuarios finales. La funcionalidad web en tiempo real se convierte no sólo en comunicación, sino en una herramienta transformadora que, cuando se combina con los recursos adecuados como Iron Suite, puede redefinir las aplicaciones interactivas.

Merece la pena destacar la propuesta de valor que ofrece Iron Suite. Cada licencia de producto parte de $749, proporcionando a los desarrolladores un conjunto de características premium. Sin embargo, si no está seguro del compromiso inmediato, cada producto ofrece generosamente un prueba gratuita. Esto le permite probar las capacidades antes de tomar una decisión.

Y, si está pensando en integrar varias herramientas, hay una noticia fantástica: puede adquiera la Iron Suite completa por el precio de sólo dos productos! Esto no sólo garantiza que obtenga el mejor rendimiento por su dinero, sino que también le equipa con un completo conjunto de herramientas para revolucionar sus aplicaciones ASP.NET Core SignalR.

< ANTERIOR
C# Verdadero Falso (Cómo funciona para desarrolladores)
SIGUIENTE >
C# SQLite (Cómo funciona para desarrolladores)

¿Listo para empezar? Versión: 2024.7 recién publicada

Descarga gratuita de NuGet Descargas totales: 9,974,197 Ver licencias >
123