Compartir a través de


.NET Aspire compatibilidad con AzureAzure SignalR Service

En este artículo, aprenderá a usar .NET Aspire para expresar un recurso de AzureAzure SignalR Service. Demostrar cómo escribir una aplicación de SignalR está fuera del ámbito de este artículo. En cambio, exploras una aplicación que ya se ha escrito y cómo se conecta con .NET.NET Aspire. Al igual que otros recursos de Azure dentro del modelo de aplicación de .NET Aspire, usted se beneficia de un aprovisionamiento e implementación sencillos con el Azure Developer CLI (azd). Para obtener más información, consulte Implementación de un proyecto de .NET Aspire en Azure Container Apps mediante la azd (guía detallada).

Anfitrión de núcleo

El proyecto host del hub es donde hospeda tu hub SignalR, el proyecto que, por ejemplo, llama a AddSignalR() y MapHub.

Instalación del paquete NuGet

Debe instalar el paquete NuGet de Microsoft 📦.Azure.SignalR.

dotnet add package Microsoft.Azure.SignalR

Para obtener más información, consulte dotnet add package o Administrar las dependencias de paquetes en aplicaciones .NET.

Expresar el recurso

En el proyecto que esté utilizando para hospedar su Hub es donde configurará el recurso AzureAzure SignalR Service. En el ejemplo siguiente se muestra cómo usar el método de extensión AddNamedAzureSignalR encadenado en el método AddSignalR:

var builder = WebApplication.CreateBuilder(args);

builder.AddServiceDefaults();

builder.Services.AddProblemDetails();

builder.Services.AddSignalR()
                .AddNamedAzureSignalR("signalr");

var app = builder.Build();

app.UseExceptionHandler();

app.MapHub<ChatHub>(HubEndpoints.ChatHub);

app.MapDefaultEndpoints();

app.Run();

Al llamar a AddNamedAzureSignalR, se agrega AzureSignalR con el nombre especificado. La cadena de conexión se leerá desde ConnectionStrings_{name}y la configuración se cargará desde la sección Azure:SignalR:{name}.

Host de la aplicación

En el proyecto de aplicación host de , expresas un AzureSignalRResource con el método AddAzureSignalR. En el ejemplo siguiente se muestra cómo el proyecto de consumo hace referencia al recurso, en este caso el proyecto host de Hub:

var builder = DistributedApplication.CreateBuilder(args);

var signalr = builder.ExecutionContext.IsPublishMode
    ? builder.AddAzureSignalR("signalr")
    : builder.AddConnectionString("signalr");

var apiService = builder.AddProject<Projects.SignalR_ApiService>("apiservice")
                        .WithReference(signalr);
  
builder.AddProject<Projects.SignalR_Web>("webfrontend")
       .WithReference(apiService);

builder.Build().Run();

En el código anterior:

  • Se comprueba el contexto de ejecución del builder para verificar si está en modo de publicación.
  • Al publicarse, se invoca el método AddAzureSignalR para expresar el AzureSignalRResource.
  • Al no publicar, se llama al método AddConnectionString para expresar una IResourceWithConnectionString a un recurso existente.
  • El proyecto host de signalr hace referencia al recurso Hub, en este caso conocido como apiService.
  • El recurso del proyecto apiService es referenciado por el proyecto SignalR_Web.

Consulte también