Expansão do SignalR com o Barramento de Serviço do Azure (SignalR 1.x)
por Patrick Fletcher
Aviso
Esta documentação não é para a versão mais recente do SignalR. Dê uma olhada em ASP.NET Core SignalR.
Neste tutorial, você implantará um aplicativo SignalR em uma Função Web do Windows Azure, usando o backplane do Barramento de Serviço para distribuir mensagens para cada instância de função.
Pré-requisitos:
- Uma conta do Windows Azure.
- O SDK do Windows Azure.
- Visual Studio 2012.
O backplane do barramento de serviço também é compatível com o Barramento de Serviço para Windows Server, versão 1.1. No entanto, ele não é compatível com a versão 1.0 do Barramento de Serviço para Windows Server.
Preços
O backplane do Barramento de Serviço usa tópicos para enviar mensagens. Para obter as informações de preços mais recentes, consulte Barramento de Serviço. No momento desta gravação, você pode enviar 1.000.000 mensagens por mês por menos de US$ 1. O plano de fundo envia uma mensagem de barramento de serviço para cada invocação de um método do hub SignalR. Também há algumas mensagens de controle para conexões, desconexões, junção ou saída de grupos e assim por diante. Na maioria dos aplicativos, a maioria do tráfego de mensagens serão invocações de método de hub.
Visão geral
Antes de chegarmos ao tutorial detalhado, aqui está uma visão geral rápida do que você fará.
Use o windows portal do Azure para criar um novo namespace do Barramento de Serviço.
Adicione estes pacotes NuGet ao seu aplicativo:
Crie um aplicativo SignalR.
Adicione o seguinte código ao Global.asax para configurar o backplane:
protected void Application_Start() { string connectionString = "Service Bus connection string"; GlobalHost.DependencyResolver.UseServiceBus(connectionString, "YourAppName"); RouteTable.Routes.MapHubs(); // ... }
Para cada aplicativo, escolha um valor diferente para "YourAppName". Não use o mesmo valor em vários aplicativos.
Criar os serviços do Azure
Crie um Serviço de Nuvem, conforme descrito em Como criar e implantar um serviço de nuvem. Siga as etapas na seção "Como criar um serviço de nuvem usando a Criação Rápida". Para este tutorial, você não precisa carregar um certificado.
Crie um novo namespace do Barramento de Serviço, conforme descrito em Como usar tópicos/assinaturas do Barramento de Serviço. Siga as etapas na seção "Criar um namespace de serviço".
Observação
Selecione a mesma região para o serviço de nuvem e o namespace do Barramento de Serviço.
Criar o Projeto do Visual Studio
Inicie o Visual Studio. No menu Arquivo, clique em Novo Projeto.
Na caixa de diálogo Novo Projeto , expanda Visual C#. Em Modelos Instalados, selecione Nuvem e, em seguida, selecione Serviço de Nuvem do Windows Azure. Mantenha o padrão .NET Framework 4.5. Nomeie o aplicativo ChatService e clique em OK.
Na caixa de diálogo Novo Serviço de Nuvem do Windows Azure , selecione ASP.NET Função Web MVC 4. Clique no botão de seta para a direita (>) para adicionar a função à sua solução.
Passe o mouse sobre a nova função para que o ícone de lápis fique visível. Clique neste ícone para renomear a função. Nomeie a função "SignalRChat" e clique em OK.
No assistente Novo projeto ASP.NET MVC 4 , selecione Aplicativo da Internet. Clique em OK. O assistente de projeto cria dois projetos:
- ChatService: este projeto é o aplicativo do Windows Azure. Ele define as funções do Azure e outras opções de configuração.
- SignalRChat: este projeto é seu projeto ASP.NET MVC 4.
Criar o aplicativo de chat do SignalR
Para criar o aplicativo de chat, siga as etapas no tutorial Introdução com o SignalR e o MVC 4.
Use o NuGet para instalar as bibliotecas necessárias. No menu Ferramentas , selecione Gerenciador de Pacotes NuGet e, em seguida, Selecione Console do Gerenciador de Pacotes. Na janela Console do Gerenciador de Pacotes , insira os seguintes comandos:
Install-Package -ProjectName SignalRChat Microsoft.AspNet.SignalR
Install-Package -ProjectName SignalRChat Microsoft.AspNet.SignalR.ServiceBus
Use a opção -ProjectName
para instalar os pacotes no projeto ASP.NET MVC, em vez do projeto do Windows Azure.
Configurar o backplane
No arquivo Global.asax do aplicativo, adicione o seguinte código:
protected void Application_Start()
{
string connectionString = "";
GlobalHost.DependencyResolver.UseServiceBus(connectionString, "Chat");
RouteTable.Routes.MapHubs();
}
Agora você precisa obter a cadeia de conexão do barramento de serviço. No portal do Azure, selecione o namespace do barramento de serviço que você criou e clique no ícone Chave de Acesso.
Copie a cadeia de conexão para a área de transferência e cole-a na variável connectionString .
string connectionString = "Endpoint=sb://xxxx.servicebus.windows.net/;
SharedSecretIssuer=owner;SharedSecretValue=XXXXXXXX";
Implantar no Azure
Em Gerenciador de Soluções, expanda a pasta Funções dentro do projeto ChatService.
Clique com o botão direito do mouse na função SignalRChat e selecione Propriedades. Selecione a guia Configuração . Em Instâncias , selecione 2. Você também pode definir o tamanho da VM como Extra Small.
Salve as alterações.
Em Gerenciador de Soluções, clique com o botão direito do mouse no projeto ChatService. Selecione Publicar.
Se essa for sua primeira vez publicando no Windows Azure, você deverá baixar suas credenciais. No assistente Publicar , clique em "Entrar para baixar credenciais". Isso solicitará que você entre no Windows portal do Azure e baixe um arquivo de configurações de publicação.
Clique em Importar e selecione o arquivo de configurações de publicação que você baixou.
Clique em Avançar. Na caixa de diálogo Publicar Configurações , em Serviço de Nuvem, selecione o serviço de nuvem que você criou anteriormente.
Clique em Publicar. Pode levar alguns minutos para implantar o aplicativo e iniciar as VMs.
Agora, quando você executa o aplicativo de chat, as instâncias de função se comunicam por meio de Barramento de Serviço do Azure, usando um tópico do Barramento de Serviço. Um tópico é uma fila de mensagens que permite vários assinantes.
O backplane cria automaticamente o tópico e as assinaturas. Para ver as assinaturas e a atividade de mensagem, abra o portal do Azure, selecione o namespace do Barramento de Serviço e clique em "Tópicos".
Demora alguns minutos para que a atividade da mensagem apareça no dashboard.
O SignalR gerencia o tempo de vida do tópico. Desde que seu aplicativo seja implantado, não tente excluir manualmente os tópicos ou alterar as configurações no tópico.