Udostępnij za pośrednictwem


obsługa .NET Aspire dla AzureAzure SignalR Service

Z tego artykułu dowiesz się, jak używać .NET Aspire do wyrażania zasobu AzureAzure SignalR Service. Pokazanie, jak napisać aplikację SignalR wykracza poza zakres tego artykułu. Zamiast tego eksplorujesz aplikację, która została już napisana i jak jest ona podłączona do .NET.NET Aspire. Podobnie jak w przypadku innych zasobów Azure w modelu aplikacji .NET Aspire, można korzystać z prostej aprowizacji i wdrażania przy użyciu Azure Developer CLI (azd). Aby uzyskać więcej informacji, zobacz Wdrażanie projektu .NET Aspire do Azure Container Apps za pomocą azd (szczegółowy przewodnik).

Host koncentratora

Projekt hosta to miejsce, w którym hostujesz swoje centrum SignalR, projekt, który na przykład wywołuje AddSignalR() i MapHub.

Instalowanie pakietu NuGet

Musisz zainstalować 📦 Microsoft.Azure.SignalR pakiet NuGet.

dotnet add package Microsoft.Azure.SignalR

Aby uzyskać więcej informacji, zobacz dotnet add package lub Zarządzanie zależnościami pakietów w aplikacjach .NET.

Wyrażanie zasobu

Projekt, w którym hostujesz swój Hub, to ten, gdzie należy skonfigurować zasób AzureAzure SignalR Service. W poniższym przykładzie zaprezentowano użycie metody rozszerzającej AddNamedAzureSignalR, która jest złączona z metodą 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();

Wywołanie AddNamedAzureSignalR dodaje AzureSignalR o określonej nazwie, parametry połączenia zostaną odczytane z ConnectionStrings_{name}, a ustawienia zostaną załadowane z sekcji Azure:SignalR:{name}.

Host aplikacji

W projekcie hosta aplikacji , wyrażasz AzureSignalRResource metodą AddAzureSignalR. W poniższym przykładzie pokazano, w jaki sposób zasób jest przywoływany przez projekt konsument, w tym przypadku projekt hosta 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();

W poprzednim kodzie:

  • Kontekst wykonywania builder jest sprawdzany, aby ustalić, czy jest w trybie publikowania.
  • Podczas publikowania wywoływana jest metoda AddAzureSignalR w celu wyrażenia AzureSignalRResource.
  • W przypadku braku publikowania metoda AddConnectionString jest wywoływana w celu wyrażenia IResourceWithConnectionString do istniejącego zasobu.
  • Zasób signalr jest przywołyny przez projekt hosta Hub, w tym przypadku znany jako apiService.
  • Zasób projektu apiService jest przywołyny przez projekt SignalR_Web.

Zobacz też