suporte .NET Aspire para AzureAzure SignalR Service
Neste artigo, você aprenderá a usar .NET Aspire para expressar um recurso de AzureAzure SignalR Service. Demonstrar como escrever um aplicativo SignalR está além do escopo deste artigo. Em vez disso, você explora um aplicativo que já foi escrito e como ele está configurado com .NET.NET Aspire. Assim como outros recursos de Azure no modelo de aplicativo .NET Aspire, você se beneficia de provisionamento e implantação simples com o Azure Developer CLI (azd
). Para obter mais informações, consulte Implantar um projeto de .NET Aspire para Azure Container Apps usando o azd
(guia detalhado).
Host do hub
O projeto de host do hub é onde você hospeda seu hub SignalR, o projeto que chama AddSignalR() e MapHub por exemplo.
Instalar o pacote NuGet
Você precisa instalar o 📦 Microsoft.Azure.SignalR pacote NuGet.
dotnet add package Microsoft.Azure.SignalR
Para obter mais informações, consulte dotnet add package ou Gerenciar dependências de pacotes em .NET aplicações.
Expressar o recurso
O projeto que você está usando para hospedar seu Hub é o local onde você irá conectar o seu recurso de AzureAzure SignalR Service. O exemplo a seguir demonstra como usar o método de extensão AddNamedAzureSignalR
encadeado no método 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();
Chamar AddNamedAzureSignalR
adiciona AzureSignalR com o nome especificado, a string de conexão será lida de ConnectionStrings_{name}
, as configurações são carregadas da seção Azure:SignalR:{name}
.
Host do aplicativo
No projeto de host do aplicativo , no, você expressa um AzureSignalRResource
com o método AddAzureSignalR
. O exemplo a seguir demonstra como o recurso é referenciado pelo projeto de consumo, nesse caso, o Hub
projeto de host:
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();
No código anterior:
- O
builder
tem seu contexto de execução verificado para ver se está no modo de publicação. - Ao publicar, o método
AddAzureSignalR
é chamado para expressar oAzureSignalRResource
. - Quando não está publicando, o método
AddConnectionString
é chamado para expressar umIResourceWithConnectionString
a um recurso existente. - O recurso
signalr
é referenciado pelo projeto de hostHub
, nesse caso conhecido comoapiService
. - O recurso de projeto
apiService
é referenciado pelo projetoSignalR_Web
.