Compartilhar via


Expansão do SignalR com o SQL Server (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ê usará SQL Server para distribuir mensagens em um aplicativo SignalR implantado em duas instâncias separadas do IIS. Você também pode executar este tutorial em um único computador de teste, mas para obter o efeito completo, você precisa implantar o aplicativo SignalR em dois ou mais servidores. Você também deve instalar SQL Server em um dos servidores ou em um servidor dedicado separado. Outra opção é executar o tutorial usando VMs no Azure.

Diagrama do servidor S Q L e sua relação entre V Ms, computadores, envio de consultas e atualizações para o servidor S Q L.

Pré-requisitos

Microsoft SQL Server 2005 ou posterior. O backplane dá suporte a edições de desktop e servidor de SQL Server. Ele não dá suporte ao banco de dados SQL Server Compact Edition ou SQL do Azure. (Se o aplicativo estiver hospedado no Azure, considere o backplane do Barramento de Serviço em vez disso.)

Visão geral

Antes de chegarmos ao tutorial detalhado, aqui está uma visão geral rápida do que você fará.

  1. Crie um novo banco de dados vazio. O backplane criará as tabelas necessárias neste banco de dados.

  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 sqlConnectionString = "Connecton string to your SQL DB";
        GlobalHost.DependencyResolver.UseSqlServer(sqlConnectionString);
    
        RouteTable.Routes.MapHubs();
        // ...
    }
    

Configurar o banco de dados

Decida se o aplicativo usará autenticação do Windows ou SQL Server autenticação para acessar o banco de dados. Independentemente disso, verifique se o usuário do banco de dados tem permissões para fazer logon, criar esquemas e criar tabelas.

Crie um novo banco de dados para o backplane a ser usado. Você pode dar qualquer nome ao banco de dados. Você não precisa criar nenhuma tabela no banco de dados; o backplane criará as tabelas necessárias.

Captura de tela da janela Pesquisador de Objetos com a pasta Bancos de Dados sendo realçada, revelando suas subpastas contidas.

Habilitar o Service Broker

É recomendável habilitar o Service Broker para o banco de dados de backplane. O Service Broker fornece suporte nativo para mensagens e enfileiramento em SQL Server, o que permite que o backplane receba atualizações com mais eficiência. (No entanto, o backplane também funciona sem o Service Broker.)

Para marcar se o Service Broker está habilitado, consulte a coluna is_broker_enabled na exibição de catálogo sys.databases.

SELECT [name], [service_broker_guid], [is_broker_enabled]
FROM [master].[sys].[databases]

Captura de tela da guia S Q L Query 1 ponto S Q L exibida no Service Broker, mostrando as guias Resultados e Mensagens.

Para habilitar o Service Broker, use a seguinte consulta SQL:

ALTER DATABASE YOUR_DATABASE SET ENABLE_BROKER

Observação

Se essa consulta aparecer como deadlock, verifique se não há aplicativos conectados ao BD.

Se você tiver habilitado o rastreamento, os rastreamentos também mostrarão se o Service Broker está habilitado.

Criar um aplicativo SignalR

Crie um aplicativo SignalR seguindo um destes tutoriais:

Em seguida, modificaremos o aplicativo de chat para dar suporte ao scaleout com SQL Server. Primeiro, adicione o pacote NuGet SignalR.SqlServer ao seu projeto. No Visual Studio, no menu Ferramentas , selecione Gerenciador de Pacotes NuGet e, em seguida, Console do Gerenciador de Pacotes. Na janela Console do Gerenciador de Pacotes, digite o seguinte comando:

Install-Package Microsoft.AspNet.SignalR.SqlServer

Em seguida, abra o arquivo Global.asax. Adicione o seguinte código ao método Application_Start :

protected void Application_Start()
{
    string sqlConnectionString = "<add your SQL connection string here>";
    GlobalHost.DependencyResolver.UseSqlServer(sqlConnectionString);

    RouteTable.Routes.MapHubs();
}

Implantar e executar o aplicativo

Prepare suas instâncias do Windows Server para implantar o aplicativo SignalR.

Adicione a função do IIS. Inclua recursos de "Desenvolvimento de Aplicativos", incluindo o Protocolo WebSocket.

Captura de tela da tela Assistente para Adicionar Funções e Recursos com as opções Funções do Servidor e Protocolo de Soquete Web realçadas.

Inclua também o Serviço de Gerenciamento (listado em "Ferramentas de Gerenciamento").

Captura de tela da tela Assistente para Adicionar Funções e Recursos com as opções Funções do Servidor e Scripts de Gerenciamento de IS e Ferramentas sendo realçadas.

Instale a Implantação da Web 3.0. Ao executar o Gerenciador do IIS, ele solicitará que você instale Microsoft Web Platform ou baixe o instalador. No Instalador de Plataforma, pesquise Implantação na Web e instale a Implantação da Web 3.0

Captura de tela da tela Do Instalador da Plataforma Web 4 pontos 5 exibindo os resultados da pesquisa com a opção Implantar na Web 3 pontos 0 realçada.

Verifique se o Serviço de Gerenciamento Web está em execução. Caso contrário, inicie o serviço. (Se você não vir o Serviço de Gerenciamento da Web na lista de serviços do Windows, verifique se instalou o Serviço de Gerenciamento quando adicionou a função do IIS.)

Por fim, abra a porta 8172 para TCP. Essa é a porta que a ferramenta de Implantação da Web usa.

Agora você está pronto para implantar o projeto do Visual Studio do computador de desenvolvimento no servidor. Em Gerenciador de Soluções, clique com o botão direito do mouse na solução e clique em Publicar.

Para obter uma documentação mais detalhada sobre a implantação da Web, consulte Mapa de Conteúdo de Implantação da Web para Visual Studio e ASP.NET.

Se você implantar o aplicativo em dois servidores, poderá abrir cada instância em uma janela separada do navegador e ver que cada um deles recebe mensagens SignalR do outro. (É claro que, em um ambiente de produção, os dois servidores ficavam atrás de um balanceador de carga.)

Captura de tela da janela do navegador Explorer internet mostrando a tela Índice que exibe mensagens do Signal R.

Depois de executar o aplicativo, você poderá ver que o SignalR criou tabelas automaticamente no banco de dados:

Captura de tela da tela Pesquisador de Objetos com o servidor MIKE dash S Q L sendo realçado e mostrando suas pastas e servidores contidos.

O SignalR gerencia as tabelas. Desde que seu aplicativo seja implantado, não exclua linhas, modifique a tabela e assim por diante.