다음을 통해 공유


.NET Aspire Azure에 대한 Azure SignalR Service 지원

이 문서에서는 .NET Aspire 사용하여 AzureAzure SignalR Service 리소스를 표현하는 방법을 알아봅니다. SignalR 앱을 작성하는 방법을 보여 주면 이 문서의 범위를 벗어납니다. 대신 이미 작성된 앱과 .NET.NET Aspire연결 방법을 살펴봅니다. .NET Aspire 앱 모델내의 다른 Azure 리소스와 마찬가지로 Azure Developer CLI(azd)를 사용하여 간단한 프로비저닝 및 배포를 활용할 수 있습니다. 자세한 내용은 : .NET Aspire에 Azure Container Apps 프로젝트를 배포하는 방법에 대한 심층 가이드(azd)를 참조하세요.

허브 호스트

허브 호스트 프로젝트는 SignalR 허브를 호스트하여 예를 들어 AddSignalR()MapHub를 호출하는 프로젝트입니다.

NuGet 패키지 설치

📦 Microsoft 및 NuGet 패키지Azure.SignalR 를 설치해야 합니다.

dotnet add package Microsoft.Azure.SignalR

자세한 내용은 dotnet add package 또는 응용 프로그램의 패키지 종속성 관리에 대한 정보 .NET를 참조하세요.

리소스 표현

Hub를 호스트하는 데 사용하는 프로젝트가 바로 AzureAzure SignalR Service 리소스를 연결할 위치입니다. 다음 예제에서는 AddSignalR 메서드에 연결된 AddNamedAzureSignalR 확장 메서드를 사용하는 방법을 보여 줍니다.

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();

AddNamedAzureSignalR를 호출하면 지정된 이름의 AzureSignalR가 추가되고, 연결 문자열은 ConnectionStrings_{name}에서 읽어지며, 설정은 Azure:SignalR:{name} 섹션에서 로드됩니다.

앱 호스트

앱 호스트 프로젝트에서 AzureSignalRResourceAddAzureSignalR 메서드를 사용하여 표현합니다. 다음 예제에서는 소비 프로젝트에서 리소스를 참조하는 방법을 보여 줍니다. 이 경우 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();

앞의 코드에서 다음을 수행합니다.

  • builder의 실행 컨텍스트가 게시 모드인지 확인하기 위해 검사됩니다.
  • 게시할 때 AddAzureSignalR 메서드가 AzureSignalRResource을 표현하기 위해 호출됩니다.
  • 게시하지 않을 때, AddConnectionString 메서드가 기존 리소스에 IResourceWithConnectionString을 표현하기 위해 호출됩니다.
  • signalr 리소스는 Hub 호스트 프로젝트에서 참조됩니다(이 경우 apiService이라고 함).
  • apiService 프로젝트 리소스는 SignalR_Web 프로젝트에서 참조됩니다.

참고 항목