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.

Diagrama que ilustra a relação entre o Tópico do Namespace do Barramento de Serviço, as Funções da Web e os computadores e contas disponíveis.

Pré-requisitos:

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á.

  1. Use o windows portal do Azure para criar um novo namespace do Barramento de Serviço.

  2. Adicione estes pacotes NuGet ao seu aplicativo:

  3. Crie um aplicativo SignalR.

  4. 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.

Captura de tela do painel NOVO com a opção e o ícone do Serviço de Nuvem sendo realçados no aplicativo, bem como um círculo vermelho.

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".

Captura de tela da tela Adicionar um novo namespace com entradas inseridas nos campos Nome do Namespace e Regiã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.

Captura de tela da tela Novo Projeto com a opção Visual C # do Serviço de Nuvem do Windows Azure sendo realçada.

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.

Captura de tela da tela Novo Serviço de Nuvem do Windows Azure com a opção Signal R Chat realçada no painel de solução serviço de nuvem do Windows Azure.

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.

Captura de tela das opções e ícones Criar, Acessar Chave e Excluir no namespace do barramento de serviço com foco na opção Criar.

Copie a cadeia de conexão para a área de transferência e cole-a na variável connectionString .

Captura de tela da tela Conectar-se à chave de acesso ao namespace, mostrando os campos Cadeia de Conexão, Emissor Padrão e Chave Padrão.

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.

Captura de tela da árvore Gerenciador de Soluções mostrando a opção Signal R Chat contida na pasta Funções do projeto serviço de chat.

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.

Captura de tela da seção Instâncias da Guia de Configuração, mostrando um 2 inserido no campo Contagem de instâncias e o campo Tamanho do V M definido 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.

Captura de tela do projeto do Serviço de Chat da tela Gerenciador de Soluções, com um menu suspenso de clique com o botão direito do mouse mostrando a opção Publicar... Opção.

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.

Captura de tela da guia Publicar Entrada do Windows Aplicativo Azure tela com o link Entrar para baixar credenciais sendo realçado.

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.

Captura de tela da guia Publicar Configurações do Windows Aplicativo Azure tela, mostrando o campo Serviço de Nuvem na guia Configurações Comuns.

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".

Captura de tela do campo serviço de nuvem selecionado que agora está sendo preenchido no portal do Azure, com o campo Nome do Serviço de Nuvem sendo realçado.

Demora alguns minutos para que a atividade da mensagem apareça no dashboard.

Captura de tela do portal do Azure dashboard exibindo a atividade de mensagem linha do tempo, mostrando uma linha azul e roxa para indicar históricos de mensagens diferentes.

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.