.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 elAzureSignalRResource
. - Al no publicar, se llama al método
AddConnectionString
para expresar unaIResourceWithConnectionString
a un recurso existente. - El proyecto host de
signalr
hace referencia al recursoHub
, en este caso conocido comoapiService
. - El recurso del proyecto
apiService
es referenciado por el proyectoSignalR_Web
.