.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 omAzureSignalRResource
tot uitdrukking te brengen. - Wanneer niet gepubliceerd, wordt de methode
AddConnectionString
aangeroepen om eenIResourceWithConnectionString
toe te voegen aan een bestaande resource. - Naar de
signalr
resource wordt verwezen door hetHub
hostproject, in dit geval ook welapiService
genoemd. - Naar de
apiService
projectresource wordt verwezen door hetSignalR_Web
project.