.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}
섹션에서 로드됩니다.
앱 호스트
앱 호스트 프로젝트에서 AzureSignalRResource
를 AddAzureSignalR
메서드를 사용하여 표현합니다. 다음 예제에서는 소비 프로젝트에서 리소스를 참조하는 방법을 보여 줍니다. 이 경우 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
프로젝트에서 참조됩니다.
참고 항목
.NET Aspire