.NET Aspire suporte para AzureAzure SignalR Service
Neste artigo, você aprenderá a usar .NET Aspire para expressar um recurso 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á conectado com .NET.NET Aspire. Como outros recursos Azure dentro do modelo de aplicação .NET Aspire, você se beneficia do provisionamento e da implementação simples com o Azure Developer CLI (azd
). Para obter mais informações, consulte Implantar um projeto .NET Aspire para Azure Container Apps usando o azd
(guia detalhado).
Anfitrião do hub
O projeto do host de hub é onde o seu hub SignalR é hospedado, o projeto que chama AddSignalR() e MapHub, por exemplo.
Instalar o pacote NuGet
Você precisa instalar o 📦 Microsoft.Azure.SignalR pacote NuGet.
- .NET CLI
- ReferênciaDePacote
dotnet add package Microsoft.Azure.SignalR
Para obter mais informações, consulte dotnet add package ou Gerir dependências de pacotes em aplicações .NET.
Explicar o recurso
Seja qual for o projeto que você está usando para hospedar seu Hub é onde você conectará seu recurso AzureAzure SignalR Service. O exemplo a seguir demonstra como usar o método de extensão AddNamedAzureSignalR
que é 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 cadeia de conexão será lida a partir de ConnectionStrings_{name}
, e as configurações são carregadas da seção Azure:SignalR:{name}
.
Anfitrião da aplicação
No projeto de host do aplicativo , expressa-se um AzureSignalRResource
através do método AddAzureSignalR
. O exemplo a seguir demonstra como o recurso é referenciado pelo projeto consumidor, neste caso o projeto host 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();
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 umaIResourceWithConnectionString
a um recurso existente. - O recurso
signalr
é referenciado pelo projeto hostHub
, neste caso conhecido comoapiService
. - O recurso do projeto
apiService
é referenciado pelo projetoSignalR_Web
.