Dela via


.NET Aspire stöd för AzureAzure SignalR Service

I den här artikeln lär du dig hur du använder .NET Aspire för att uttrycka en AzureAzure SignalR Service resurs. Att visa hur du skriver en SignalR app ligger utanför omfånget för den här artikeln. I stället utforskar du en app som redan har skrivits och hur den är kopplad till .NET.NET Aspire. Precis som andra Azure resurser i .NET Aspireappmodellendrar du nytta av enkel etablering och distribution med Azure Developer CLI (azd). För mer information, se distribuera ett .NET Aspire-projekt till Azure Container Apps med hjälp av azd (utförlig guide).

Hubbvärd

Hubbvärdprojektet är där du är värd för din SignalR hubb, projektet som anropar AddSignalR() och MapHub till exempel.

Installera NuGet-paketet

Du måste installera 📦 Microsoft.Azure.SignalR NuGet-paket.

dotnet add package Microsoft.Azure.SignalR

Mer information finns i dotnet add package eller Hantera paketberoenden i .NET applikationer.

Uttrycka resursen

Oavsett vilket projekt du använder för att hosta din Hub kopplar du upp din AzureAzure SignalR Service-resurs. I följande exempel visas hur du använder AddNamedAzureSignalR-tilläggsmetoden som är länkad till metoden 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();

Genom att anropa AddNamedAzureSignalR läggs AzureSignalR till med det angivna namnet. Anslutningssträngen hämtas från ConnectionStrings_{name}och inställningarna läses in från avsnittet Azure:SignalR:{name}.

Appvärd

I appvärdprojektetuttrycker du en AzureSignalRResource med metoden AddAzureSignalR. I följande exempel visas hur resursen refereras av det förbrukande projektet, i det här fallet Hub värdprojektet:

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();

I föregående kod:

  • builder får sin körningskontext kontrollerad för att se om den är i publiceringsläge.
  • När du publicerar anropas metoden AddAzureSignalR för att representera AzureSignalRResource.
  • När du inte publicerar anropas metoden AddConnectionString för att uttrycka en IResourceWithConnectionString till en befintlig resurs.
  • Resursen signalr refereras av värdprojektet Hub, i det här fallet känt som apiService.
  • apiService projektresursen refereras till av SignalR_Web projektet.

Se även