.NET Aspire Unterstützung für AzureAzure SignalR Service
In diesem Artikel erfahren Sie, wie Sie .NET Aspire verwenden, um eine AzureAzure SignalR Service Ressource auszudrücken. Das Demonstrieren, wie eine SignalR-App geschrieben wird, liegt außerhalb des Umfangs dieses Artikels. Stattdessen erkunden Sie eine App, die bereits geschrieben wurde, und wie sie mit .NET.NET Aspireverbunden ist. Wie andere Azure Ressourcen im .NET AspireApp-Modellprofitieren Sie von der einfachen Bereitstellung und Implementierung mit dem Azure Developer CLI (azd
). Weitere Informationen finden Sie unter ein .NET Aspire Projekt auf Azure Container Apps mithilfe von azd
bereitstellen (umfassender Leitfaden).
Hub-Host
Das Hubhostprojekt ist dort, wo Sie Ihren SignalR-Hub hosten, das Projekt, das beispielsweise AddSignalR() und MapHub aufruft.
Installieren des NuGet-Pakets
Sie müssen das 📦 MicrosoftAzureSignalR NuGet-Paket installieren.
dotnet add package Microsoft.Azure.SignalR
Weitere Informationen finden Sie unter dotnet add package oder Verwalten von Paketabhängigkeiten in .NET Anwendungen.
Ausdrücken der Ressource
Welches Projekt Sie zum Hosten Ihrer Hub verwenden, ist der Ort, an dem Sie Ihre AzureAzure SignalR Service-Ressource einbinden. Das folgende Beispiel veranschaulicht die Verwendung der AddNamedAzureSignalR
Erweiterungsmethode, die in der AddSignalR
-Methode verkettet ist:
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();
Durch das Aufrufen von AddNamedAzureSignalR
wird AzureSignalR mit dem angegebenen Namen hinzugefügt. Die Verbindungszeichenfolge wird aus ConnectionStrings_{name}
entnommen, die Einstellungen werden aus dem Abschnitt Azure:SignalR:{name}
geladen.
App-Host
Im -App-Hostprojektdrücken Sie ein AzureSignalRResource
mit der AddAzureSignalR
-Methode aus. Im folgenden Beispiel wird veranschaulicht, wie auf die Ressource vom verbrauchenden Projekt verwiesen wird, in diesem Fall das Hub
Hostprojekt:
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();
Im vorherigen Code:
- Es wird überprüft, ob sich der Ausführungskontext des
builder
im Veröffentlichungsmodus befindet. - Beim Veröffentlichen wird die Methode
AddAzureSignalR
aufgerufen, umAzureSignalRResource
darzustellen. - Wenn keine Veröffentlichung erfolgt, wird die
AddConnectionString
-Methode aufgerufen, um eineIResourceWithConnectionString
an eine vorhandene Ressource zu übermitteln. - Auf die
signalr
Ressource wird vomHub
Hostprojekt verwiesen, das in diesem Fall alsapiService
bekannt ist. - Die Projektressource
apiService
wird vom ProjektSignalR_Web
referenziert.