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żeniaAzureSignalRResource
. - W przypadku braku publikowania metoda
AddConnectionString
jest wywoływana w celu wyrażeniaIResourceWithConnectionString
do istniejącego zasobu. - Zasób
signalr
jest przywołyny przez projekt hostaHub
, w tym przypadku znany jakoapiService
. - Zasób projektu
apiService
jest przywołyny przez projektSignalR_Web
.