Partilhar via


.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.

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 o AzureSignalRResource.
  • Quando não está publicando, o método AddConnectionString é chamado para expressar uma IResourceWithConnectionString a um recurso existente.
  • O recurso signalr é referenciado pelo projeto host Hub, neste caso conhecido como apiService.
  • O recurso do projeto apiService é referenciado pelo projeto SignalR_Web.

Ver também