Azure Service Bus로 SignalR 규모 확장(SignalR 1.x)
경고
이 설명서는 최신 버전의 SignalR용이 아닙니다. ASP.NET Core SignalR을 살펴보세요.
이 자습서에서는 Service Bus 백플레인을 사용하여 각 역할 instance 메시지를 배포하는 SignalR 애플리케이션을 Windows Azure 웹 역할에 배포합니다.
필수 조건:
- Windows Azure 계정.
- Windows Azure SDK.
- Visual Studio 2012.
서비스 버스 백플레인은 Windows Server용 Service Bus 버전 1.1과도 호환됩니다. 그러나 Windows Server용 Service Bus 버전 1.0과 호환되지 않습니다.
가격 책정
Service Bus 백플레인은 topics 사용하여 메시지를 보냅니다. 최신 가격 책정 정보는 Service Bus를 참조하세요. 이 글을 쓰는 시점에 매월 1,000,000달러 미만의 메시지를 보낼 수 있습니다. 백플레인은 SignalR Hub 메서드의 각 호출에 대한 서비스 버스 메시지를 보냅니다. 연결, 연결 끊기, 그룹 가입 또는 탈퇴 등에 대한 몇 가지 제어 메시지도 있습니다. 대부분의 애플리케이션에서 메시지 트래픽의 대부분은 허브 메서드 호출이 됩니다.
개요
자세한 자습서를 시작하기 전에 수행할 작업을 간단히 설명합니다.
Windows Azure Portal 사용하여 새 Service Bus 네임스페이스를 만듭니다.
애플리케이션에 다음 NuGet 패키지를 추가합니다.
SignalR 애플리케이션을 만듭니다.
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 대화 상자에서 MVC 4 웹 역할 ASP.NET 선택합니다. 오른쪽 화살표 단추(>)를 클릭하여 솔루션에 역할을 추가합니다.
새 역할 위로 마우스를 가져가면 연필 아이콘이 표시됩니다. 역할의 이름을 바꾸려면 이 아이콘을 클릭합니다. 역할 이름을 "SignalRChat"으로 지정하고 확인을 클릭합니다.
새 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 네임스페이스를 선택하고 액세스 키 아이콘을 클릭합니다.
연결 문자열을 클립보드에 복사한 다음 connectionString 변수에 붙여넣습니다.
string connectionString = "Endpoint=sb://xxxx.servicebus.windows.net/;
SharedSecretIssuer=owner;SharedSecretValue=XXXXXXXX";
Azure에 배포
솔루션 탐색기 ChatService 프로젝트 내에서 Roles 폴더를 확장합니다.
SignalRChat 역할을 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다. 구성 탭을 선택합니다. 인스턴스에서 2를 선택합니다. VM 크기를 Extra Small로 설정할 수도 있습니다.
변경 내용을 저장합니다.
솔루션 탐색기 ChatService 프로젝트를 마우스 오른쪽 단추로 클릭합니다. 게시를 선택합니다.
처음으로 Windows Azure에 게시하는 경우 자격 증명을 다운로드해야 합니다. 게시 마법사에서 "로그인하여 자격 증명 다운로드"를 클릭합니다. 그러면 Windows Azure Portal 로그인하고 게시 설정 파일을 다운로드하라는 메시지가 표시됩니다.
가져오기를 클릭하고 다운로드한 게시 설정 파일을 선택합니다.
다음을 클릭합니다. 게시 설정 대화 상자의 클라우드 서비스에서 이전에 만든 클라우드 서비스를 선택합니다.
게시를 클릭합니다. 애플리케이션을 배포하고 VM을 시작하는 데 몇 분 정도 걸릴 수 있습니다.
이제 채팅 애플리케이션을 실행할 때 역할 인스턴스는 Service Bus 토픽을 사용하여 Azure Service Bus 통해 통신합니다. 토픽은 여러 구독자를 허용하는 메시지 큐입니다.
백플레인은 토픽 및 구독을 자동으로 만듭니다. 구독 및 메시지 활동을 보려면 Azure Portal 열고 Service Bus 네임스페이스를 선택하고 "토픽"을 클릭합니다.
메시지 활동이 dashboard 표시되는 데 몇 분 정도 걸립니다.
SignalR은 토픽 수명을 관리합니다. 애플리케이션이 배포되는 한 항목의 topics 수동으로 삭제하거나 설정을 변경하지 마세요.