Prise en charge de .NET Aspire pour AzureAzure SignalR Service
Dans cet article, vous allez apprendre à utiliser .NET Aspire pour exprimer une ressource AzureAzure SignalR Service. Montrer comment écrire une application SignalR est au-delà de l’étendue de cet article. Au lieu de cela, vous explorez une application qui a déjà été écrite et comment elle est connectée avec .NET.NET Aspire. Comme d’autres ressources Azure au sein du modèle d’application .NET Aspire, vous bénéficiez d’un approvisionnement et d’un déploiement simples avec le Azure Developer CLI (azd
). Pour plus d’informations, consultez Déployer un projet de .NET Aspire sur Azure Container Apps à l’aide du azd
(guide détaillé).
Hôte du hub
Le projet hub hôte est l’emplacement où vous hébergez votre hub SignalR ; c’est, par exemple, le projet qui appelle AddSignalR() et MapHub.
Installer le package NuGet
Vous devez installer le package NuGet 📦Azure.SignalR de Microsoft.
dotnet add package Microsoft.Azure.SignalR
Pour plus d'informations, consultez dotnet add package ou Gérer les dépendances des packages dans les applications .NET.
Exprimer la ressource
Quel que soit le projet que vous utilisez pour héberger votre Hub, vous allez configurer votre ressource AzureAzure SignalR Service. L’exemple suivant montre comment utiliser la méthode d’extension AddNamedAzureSignalR
qui est chaînée sur la méthode 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();
L’appel AddNamedAzureSignalR
ajoute AzureSignalR avec le nom spécifié, la chaîne de connexion sera récupérée à partir de ConnectionStrings_{name}
, les paramètres sont chargés à partir de la section Azure:SignalR:{name}
.
Hôte d’application
Dans le projet hôte d’application , vous exprimez une AzureSignalRResource
avec la méthode AddAzureSignalR
. L’exemple suivant montre comment la ressource est référencée par le projet consommateur, dans ce cas le projet hôte 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();
Dans le code précédent :
- Le contexte d'exécution du
builder
est vérifié pour voir s'il est en mode publication. - Lors de la publication, la méthode
AddAzureSignalR
est appelée pour exprimer leAzureSignalRResource
. - Lorsque vous ne publiez pas, la méthode
AddConnectionString
est appelée pour effectuer uneIResourceWithConnectionString
sur une ressource existante. - La ressource
signalr
est référencée par le projet hôteHub
, dans ce cas appeléapiService
. - La ressource de projet
apiService
est référencée par le projetSignalR_Web
.