다음을 통해 공유


Azure Service Bus로 SignalR 규모 확장(SignalR 1.x)

작성자 : Patrick Fletcher

경고

이 설명서는 최신 버전의 SignalR용이 아닙니다. ASP.NET Core SignalR을 살펴보세요.

이 자습서에서는 Service Bus 백플레인을 사용하여 각 역할 instance 메시지를 배포하는 SignalR 애플리케이션을 Windows Azure 웹 역할에 배포합니다.

Service Bus 네임스페이스 토픽, 웹 역할 및 사용 가능한 컴퓨터 및 계정 간의 관계를 보여 주는 다이어그램

필수 조건:

서비스 버스 백플레인은 Windows Server용 Service Bus 버전 1.1과도 호환됩니다. 그러나 Windows Server용 Service Bus 버전 1.0과 호환되지 않습니다.

가격 책정

Service Bus 백플레인은 topics 사용하여 메시지를 보냅니다. 최신 가격 책정 정보는 Service Bus를 참조하세요. 이 글을 쓰는 시점에 매월 1,000,000달러 미만의 메시지를 보낼 수 있습니다. 백플레인은 SignalR Hub 메서드의 각 호출에 대한 서비스 버스 메시지를 보냅니다. 연결, 연결 끊기, 그룹 가입 또는 탈퇴 등에 대한 몇 가지 제어 메시지도 있습니다. 대부분의 애플리케이션에서 메시지 트래픽의 대부분은 허브 메서드 호출이 됩니다.

개요

자세한 자습서를 시작하기 전에 수행할 작업을 간단히 설명합니다.

  1. Windows Azure Portal 사용하여 새 Service Bus 네임스페이스를 만듭니다.

  2. 애플리케이션에 다음 NuGet 패키지를 추가합니다.

  3. SignalR 애플리케이션을 만듭니다.

  4. Global.asax에 다음 코드를 추가하여 백플레인을 구성합니다.

    protected void Application_Start()
    {
        string connectionString = "Service Bus connection string";
        GlobalHost.DependencyResolver.UseServiceBus(connectionString, "YourAppName");
    
        RouteTable.Routes.MapHubs();
        // ...
    }
    

각 애플리케이션에 대해 "YourAppName"에 대해 다른 값을 선택합니다. 여러 애플리케이션에서 동일한 값을 사용하지 마세요.

Azure 서비스 만들기

클라우드 서비스를 만들고 배포하는 방법에 설명된 대로 클라우드 서비스를 만듭니다. "방법: 빠른 만들기를 사용하여 클라우드 서비스 만들기" 섹션의 단계를 따릅니다. 이 자습서에서는 인증서를 업로드할 필요가 없습니다.

애플리케이션에서 클라우드 서비스 옵션 및 아이콘이 강조 표시되고 빨간색 원이 있는 새로 만들기 창의 스크린샷

Service Bus 토픽/구독을 사용하는 방법에 설명된 대로 새 Service Bus 네임스페이스를 만듭니다. "서비스 네임스페이스 만들기" 섹션의 단계를 따릅니다.

네임스페이스 이름 및 지역 필드에 입력된 항목이 있는 새 네임스페이스 추가 화면의 스크린샷

참고

클라우드 서비스 및 Service Bus 네임스페이스에 대해 동일한 지역을 선택해야 합니다.

Visual Studio 프로젝트 만들기

Visual Studio를 시작합니다. 파일 메뉴에서 새 프로젝트를 클릭합니다.

새 프로젝트 대화 상자에서 Visual C#을 확장합니다. 설치된 템플릿에서 클라우드를 선택한 다음, Windows Azure Cloud Service를 선택합니다. 기본 .NET Framework 4.5를 유지합니다. 애플리케이션 이름을 ChatService로 지정하고 확인을 클릭합니다.

Windows Azure Cloud Service Visual C # 옵션이 강조 표시된 새 프로젝트 화면의 스크린샷.

새 Windows Azure Cloud Service 대화 상자에서 MVC 4 웹 역할 ASP.NET 선택합니다. 오른쪽 화살표 단추(>)를 클릭하여 솔루션에 역할을 추가합니다.

새 역할 위로 마우스를 가져가면 연필 아이콘이 표시됩니다. 역할의 이름을 바꾸려면 이 아이콘을 클릭합니다. 역할 이름을 "SignalRChat"으로 지정하고 확인을 클릭합니다.

Windows Azure Cloud Service 솔루션 창에 신호 R 채팅 옵션이 강조 표시된 새 Windows Azure Cloud Service 화면의 스크린샷.

새 ASP.NET MVC 4 프로젝트 마법사에서 인터넷 애플리케이션을 선택합니다. 확인을 클릭합니다. 프로젝트 마법사는 다음 두 개의 프로젝트를 만듭니다.

  • ChatService: 이 프로젝트는 Windows Azure 애플리케이션입니다. Azure 역할 및 기타 구성 옵션을 정의합니다.
  • SignalRChat: 이 프로젝트는 ASP.NET MVC 4 프로젝트입니다.

SignalR 채팅 애플리케이션 만들기

채팅 애플리케이션을 만들려면 SignalR 및 MVC 4를 사용하여 시작 자습서의 단계를 수행합니다.

NuGet을 사용하여 필요한 라이브러리를 설치합니다. 도구 메뉴에서 NuGet 패키지 관리자를 선택한 다음 패키지 관리자 콘솔을 선택합니다. 패키지 관리자 콘솔 창에서 다음 명령을 입력합니다.

Install-Package -ProjectName SignalRChat Microsoft.AspNet.SignalR
Install-Package -ProjectName SignalRChat Microsoft.AspNet.SignalR.ServiceBus

-ProjectName 옵션을 사용하여 Windows Azure 프로젝트가 아닌 ASP.NET MVC 프로젝트에 패키지를 설치합니다.

백플레인 구성

애플리케이션의 Global.asax 파일에 다음 코드를 추가합니다.

protected void Application_Start()
{
    string connectionString = "";
    GlobalHost.DependencyResolver.UseServiceBus(connectionString, "Chat");  

    RouteTable.Routes.MapHubs();
}

이제 Service Bus 연결 문자열을 가져와야 합니다. Azure Portal 만든 Service Bus 네임스페이스를 선택하고 액세스 키 아이콘을 클릭합니다.

만들기 옵션에 포커스가 있는 Service Bus 네임스페이스의 만들기, 액세스 키 및 삭제 옵션 및 아이콘 스크린샷

연결 문자열을 클립보드에 복사한 다음 connectionString 변수에 붙여넣습니다.

연결 문자열, 기본 발급자 및 기본 키 필드를 보여 주는 네임스페이스에 대한 액세스 키 연결 화면의 스크린샷

string connectionString = "Endpoint=sb://xxxx.servicebus.windows.net/;
SharedSecretIssuer=owner;SharedSecretValue=XXXXXXXX";

Azure에 배포

솔루션 탐색기 ChatService 프로젝트 내에서 Roles 폴더를 확장합니다.

Chat Service 프로젝트의 역할 폴더에 포함된 신호 R 채팅 옵션을 보여 주는 솔루션 탐색기 트리의 스크린샷

SignalRChat 역할을 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다. 구성 탭을 선택합니다. 인스턴스에서 2를 선택합니다. VM 크기를 Extra Small로 설정할 수도 있습니다.

인스턴스 수 필드에 입력된 2개와 추가 작게로 설정된 VM 크기 필드를 보여 주는 구성 탭의 인스턴스 섹션 스크린샷

변경 내용을 저장합니다.

솔루션 탐색기 ChatService 프로젝트를 마우스 오른쪽 단추로 클릭합니다. 게시를 선택합니다.

오른쪽 클릭 드롭다운 메뉴에 게시...가 표시된 솔루션 탐색기 화면의 Chat Service 프로젝트 스크린샷 옵션.

처음으로 Windows Azure에 게시하는 경우 자격 증명을 다운로드해야 합니다. 게시 마법사에서 "로그인하여 자격 증명 다운로드"를 클릭합니다. 그러면 Windows Azure Portal 로그인하고 게시 설정 파일을 다운로드하라는 메시지가 표시됩니다.

자격 증명 다운로드에 로그인 링크가 강조 표시된 Windows Azure 애플리케이션 게시 화면의 로그인 탭 스크린샷

가져오기를 클릭하고 다운로드한 게시 설정 파일을 선택합니다.

다음을 클릭합니다. 게시 설정 대화 상자의 클라우드 서비스에서 이전에 만든 클라우드 서비스를 선택합니다.

공용 설정 탭의 클라우드 서비스 필드를 보여 주는 Windows Azure 애플리케이션 게시 화면의 설정 탭 스크린샷

게시를 클릭합니다. 애플리케이션을 배포하고 VM을 시작하는 데 몇 분 정도 걸릴 수 있습니다.

이제 채팅 애플리케이션을 실행할 때 역할 인스턴스는 Service Bus 토픽을 사용하여 Azure Service Bus 통해 통신합니다. 토픽은 여러 구독자를 허용하는 메시지 큐입니다.

백플레인은 토픽 및 구독을 자동으로 만듭니다. 구독 및 메시지 활동을 보려면 Azure Portal 열고 Service Bus 네임스페이스를 선택하고 "토픽"을 클릭합니다.

선택한 클라우드 서비스 필드가 이제 Azure Portal 채워지고 Cloud Service의 이름 필드가 강조 표시된 스크린샷

메시지 활동이 dashboard 표시되는 데 몇 분 정도 걸립니다.

메시지 활동 타임라인 표시하는 Azure Portal dashboard 다른 메시지 기록을 나타내는 파란색 및 자주색 선을 보여 주는 스크린샷

SignalR은 토픽 수명을 관리합니다. 애플리케이션이 배포되는 한 항목의 topics 수동으로 삭제하거나 설정을 변경하지 마세요.