Compartilhar via


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

Consulte também