Condividi tramite


.NET Aspire supporto per AzureAzure SignalR Service

Questo articolo illustra come usare .NET Aspire per esprimere una risorsa AzureAzure SignalR Service. La dimostrazione di come scrivere un'app SignalR non rientra nell'ambito di questo articolo. Si esplora invece un'app già scritta e come è collegata con .NET.NET Aspire. Analogamente ad altre risorse di Azure all'interno del modello di app .NET Aspire, è possibile sfruttare il provisioning e la distribuzione semplici con il Azure Developer CLI (azd). Per altre informazioni, vedere Distribuire un progetto di .NET Aspire per Azure Container Apps usando azd (guida dettagliata).

Host del hub

Il progetto host hub è la posizione in cui si ospita l'hub SignalR, il progetto che chiama AddSignalR() e MapHub, ad esempio.

Installare il pacchetto NuGet

È necessario installare il 📦 Microsoft.Azure.SignalR pacchetto NuGet.

dotnet add package Microsoft.Azure.SignalR

Per altre informazioni, vedere dotnet add package o Gestire le dipendenze dei pacchetti in .NET applicazioni.

Esprimere la risorsa

Qualsiasi progetto che stai utilizzando per ospitare il Hub è il luogo in cui collegherai la risorsa AzureAzure SignalR Service. Nell'esempio seguente viene illustrato come usare il metodo di estensione AddNamedAzureSignalR concatenato nel metodo 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();

La chiamata AddNamedAzureSignalR aggiunge AzureSignalR con il nome specificato, la stringa di connessione verrà letta da ConnectionStrings_{name}, le impostazioni vengono caricate dalla sezione Azure:SignalR:{name}.

Host dell'applicazione

Nel progetto host dell'app , un AzureSignalRResource viene espresso utilizzando il metodo AddAzureSignalR. Nell'esempio seguente viene illustrato come viene fatto riferimento alla risorsa dal progetto di utilizzo, in questo caso il progetto host 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();

Nel codice precedente:

  • Il contesto di esecuzione di builder viene controllato per verificare se è in modalità pubblicazione.
  • Quando si pubblica, il metodo AddAzureSignalR viene chiamato per rappresentare il AzureSignalRResource.
  • Quando non si pubblica, viene invocato il metodo AddConnectionString per esprimere un IResourceWithConnectionString a una risorsa esistente.
  • La risorsa signalr fa riferimento al progetto host Hub, in questo caso noto come apiService.
  • La risorsa di progetto apiService fa riferimento al progetto SignalR_Web.

Vedere anche