Delen via


.NET Aspire ondersteuning voor AzureAzure SignalR Service

In dit artikel leert u hoe u .NET Aspire gebruikt om een AzureAzure SignalR Service resource uit te drukken. Het demonstreren van het schrijven van een SignalR-app valt buiten het bereik van dit artikel. In plaats daarvan verkent u een app die al is geschreven en hoe deze is bekabeld met .NET.NET Aspire. Net als andere Azure resources binnen het .NET Aspireapp-model, profiteert u van eenvoudige inrichting en implementatie met de Azure Developer CLI (azd). Zie Een .NET Aspire-project implementeren voor Azure Container Apps met behulp van de azd (uitgebreide handleiding)voor meer informatie.

Hubhost

Het hubhostproject is waar u uw SignalR hub host, het project dat bijvoorbeeld AddSignalR() aanroept en MapHub.

Het NuGet-pakket installeren

U moet het Microsoft 📦 NuGet-pakket installeren.Azure.SignalR

dotnet add package Microsoft.Azure.SignalR

Zie dotnet pakket toevoegen of Pakketafhankelijkheden beheren in .NET toepassingenvoor meer informatie.

De bron uitdrukken

Welk project u ook gebruikt om uw Hub te hosten, is waar u uw AzureAzure SignalR Service resource gaat koppelen. In het volgende voorbeeld ziet u hoe u de AddNamedAzureSignalR-extensiemethode gebruikt die is gekoppeld aan de AddSignalR methode:

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

Als u AddNamedAzureSignalR aanroept, wordt AzureSignalR met de opgegeven naam toegevoegd. De verbindingsreeks wordt gelezen uit ConnectionStrings_{name}, de instellingen worden geladen vanuit Azure:SignalR:{name} sectie.

App-host

In het app-host-projectdrukt u een AzureSignalRResource uit met de methode AddAzureSignalR. In het volgende voorbeeld ziet u hoe naar de resource wordt verwezen door het verbruikende project, in dit geval het Hub hostproject:

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

In de voorgaande code:

  • De builder heeft de uitvoeringscontext gecontroleerd om te zien of deze zich in de publicatiemodus bevindt.
  • Bij het publiceren worden de methode AddAzureSignalR aangeroepen om AzureSignalRResourcetot uitdrukking te brengen.
  • Wanneer niet gepubliceerd, wordt de methode AddConnectionString aangeroepen om een IResourceWithConnectionString toe te voegen aan een bestaande resource.
  • Naar de signalr resource wordt verwezen door het Hub hostproject, in dit geval ook wel apiServicegenoemd.
  • Naar de apiService projectresource wordt verwezen door het SignalR_Web project.

Zie ook