Compartilhar via


Tutorial: implantar um aplicativo ASP.NET Core e conectar-se ao Banco de Dados SQL do Azure no Serviço de Aplicativo do Azure

Nesse tutorial, você aprenderá a implantar um aplicativo baseado em dados ASP.NET Core no Serviço de Aplicativo do Azure e conectar-se a um Banco de Dados SQL do Azure. Você também implantará um Cache do Azure para Redis para habilitar o código de cache em seu aplicativo. O Serviço de Aplicativo do Azure é um serviço de hospedagem na Web com aplicação de patch automática altamente escalonável que pode implantar facilmente aplicativos no Windows ou no Linux. Embora esse tutorial use um aplicativo ASP.NET Core 7.0, o processo é o mesmo para outras versões do ASP.NET Core e do ASP.NET Framework.

Este tutorial exige:

Aplicativo de exemplo

Para explorar o aplicativo de exemplo usado neste tutorial, baixe-o do repositório https://github.com/Azure-Samples/msdocs-app-service-sqldb-dotnetcore ou clone-o usando o seguinte comando Git:

git clone https://github.com/Azure-Samples/msdocs-app-service-sqldb-dotnetcore.git
cd msdocs-app-service-sqldb-dotnetcore

1. Criar Serviço de Aplicativo, banco de dados e cache

Nesta etapa, você criará os recursos do Azure. As etapas usadas neste tutorial criam um conjunto de recursos seguros por padrão que incluem o Serviço de Aplicativo, o Banco de Dados SQL do Azure e o Cache do Azure. Para o processo de criação, você especificará:

  • O Nome do aplicativo Web. Esse nome é usado como parte do nome DNS para seu aplicativo Web na forma de https://<app-name>.azurewebsites.net.
  • A Região para executar o aplicativo fisicamente no mundo.
  • A pilha de runtime para o aplicativo. É aqui que você seleciona a versão do .NET a ser usada para o aplicativo.
  • O plano de hospedagem para o aplicativo. É o tipo de preço que inclui o conjunto de recursos e a capacidade de colocação em escala do seu aplicativo.
  • O Grupo de Recursos para o aplicativo. Um grupo de recursos permite agrupar (em um contêiner lógico) todos os recursos necessários do Azure para o aplicativo.

Entre no portal do Azure e siga estas etapas para criar seus recursos do Serviço de Aplicativo do Azure.

Etapa 1: no portal do Azure:

  1. Insira “banco de dados do aplicativo Web” na caixa de pesquisa na parte superior do portal do Azure.
  2. Selecione o item Web App + Banco de Dados no título Marketplace. Você também pode navegar diretamente para o assistente de criação.

Uma captura de tela mostrando como usar a caixa de pesquisa na barra de ferramentas superior para localizar o assistente de criação de Aplicativo Web + Banco de dados.

Etapa 2: na página Criar aplicativo Web + Banco de dados, preencha o formulário conforme mostrado a seguir.

  1. Grupo de recursos → Selecione Criar e use o nome msdocs-core-sql-tutorial.
  2. Região → qualquer região do Azure próxima a você.
  3. Nomemsdocs-laravel-mysql-XYZ, em que XYZ são três caracteres aleatórios. Esse nome deve ser exclusivo no Azure.
  4. Pilha de runtime.NET 7 (STS).
  5. Adicionar o Cache do Azure para Redis?Sim.
  6. Plano de hospedagemBásico. Quando estiver pronto, você poderá escalar verticalmente até um tipo de preço de produção posteriormente.
  7. Selecione SQLAzure como mecanismo de banco de dados. O Banco de Dados SQL do Azure é um mecanismo de banco de dados de PaaS (plataforma como serviço) totalmente gerenciado que está sempre em execução na última versão estável do SQL Server.
  8. Selecione Examinar + criar.
  9. Depois de concluir a validação, selecione Criar.

Uma captura de tela que mostra como configurar um novo aplicativo e banco de dados no assistente Aplicativo Web + Banco de Dados.

Etapa 3: a implantação leva alguns minutos para ser concluída. Depois que a implantação for concluída, selecione o botão Ir para o recurso. Você é levado diretamente para o aplicativo do Serviço de Aplicativo, mas os seguintes recursos são criados:

  • Grupo de recursos → o contêiner para todos os recursos criados.
  • Plano do Serviço de Aplicativo → define os recursos de computação para o Serviço de Aplicativo. É criado um plano do Linux na camada Básico.
  • Serviço de Aplicativo → Representa seu aplicativo e é executado no plano de Serviço de Aplicativo.
  • Rede virtual → Integrada ao aplicativo do Serviço de Aplicativo e isola o tráfego de rede de back-end.
  • Pontos de extremidade privados → Acessar pontos de extremidade para o servidor de banco de dados e o cache Redis na rede virtual.
  • Adaptadores de rede → Representa endereços IP privados, um para cada um dos pontos de extremidade privados.
  • Servidor do Banco de Dados SQL do Azure → Acessível somente por trás do ponto de extremidade privado.
  • Banco de Dados SQL do Azure → Um banco de dados e um usuário são criados no servidor.
  • Cache do Azure para Redis → Acessível somente por trás de seu ponto de extremidade privado.
  • Zonas DNS privado → Habilitar a resolução DNS do servidor de banco de dados e o cache Redis na rede virtual.

Uma captura de tela mostrando o processo de implantação concluído.

2. Verificar cadeias de conexão

O assistente de criação já gerou cadeias de conexão para o banco de dados SQL e o cache Redis. Nessa etapa, localize as cadeias de conexão gerada para mais tarde.

Etapa 1: na página Serviço de Aplicativo, no menu à esquerda, selecione Configuração.

Uma captura de tela que mostra como abrir a página de configuração no Serviço de Aplicativo.

Etapa 2:

  1. Role até a parte inferior da página e localize AZURE_SQL_CONNECTIONSTRING na seção Cadeias de conexão. Essa cadeia de caracteres foi gerada do novo banco de dados SQL pelo assistente de criação. Para configurar o aplicativo, basta saber esse nome.
  2. Além disso, localize AZURE_REDIS_CONNECTIONSTRING na seção Configurações de aplicativo. Essa cadeia de caracteres foi gerada do novo cache Redis pelo assistente de criação. Para configurar o aplicativo, basta saber esse nome.
  3. Se desejar, você pode selecionar o botão Editar à direita de cada configuração e ver ou copiar seu valor. Depois, você vai alterar o aplicativo para usar AZURE_SQL_CONNECTIONSTRING e AZURE_REDIS_CONNECTIONSTRING.

Uma captura de tela que mostra como criar uma configuração de aplicativo.

3. Implantar código de exemplo

Nesta etapa, você configurará a implantação do GitHub usando o GitHub Actions. É apenas uma das muitas maneiras de implantar no Serviço de Aplicativo, mas também uma ótima maneira de ter integração contínua em seu processo de implantação. Por padrão, cada git push em seu repositório GitHub iniciará a ação de compilação e implantação.

Etapa 1: em uma nova janela do navegador:

  1. Entre em sua conta do GitHub.
  2. Navegue até https://github.com/Azure-Samples/msdocs-app-service-sqldb-dotnetcore.
  3. Selecione Fork.
  4. Selecione Criar fork.

Uma captura de tela que mostra como criar um fork do repositório do GitHub de exemplo.

Etapa 2: na página Serviço de Aplicativo, no menu esquerdo, selecione Centro de Implantação.

Uma captura de tela que mostra como abrir o Centro de Implantação no Serviço de Aplicativo.

Etapa 3: na página Centro de Implantação:

  1. Em Origem, selecione GitHub. Por padrão, o GitHub Actions é selecionado como o provedor de build.
  2. Entre em sua conta do GitHub e siga o prompt para autorizar o Azure.
  3. Em Organização, selecione sua conta.
  4. Em Repositório, selecione msdocs-app-service-sqldb-dotnetcore.
  5. Em Branch, selecione main.
  6. No menu superior, selecione Salvar. O Serviço de Aplicativo confirma um arquivo de fluxo de trabalho no repositório GitHub escolhido, no diretório .github/workflows.

Uma captura de tela que mostra como configurar o CI/CD usando o GitHub Actions.

Etapa 4: de volta à página do GitHub da amostra bifurcada, abra o Visual Studio Code no navegador pressionando a tecla ..

Uma captura de tela que mostra como abrir a experiência de navegador do Visual Studio Code no GitHub.

Etapa 5: no Visual Studio Code, no navegador:

  1. Abra DotNetCoreSqlDb/appsettings.json no explorer.
  2. Altere o nome da cadeia de conexão de MyDbConnection para AZURE_SQL_CONNECTIONSTRING, que corresponde à cadeia de conexão que já foi criada no Serviço de Aplicativo.

Uma captura de tela mostrando o nome da cadeia de conexão alterado em appsettings.json.

Etapa 6:

  1. Abra DotNetCoreSqlDb/Program.cs no Explorer.
  2. No método options.UseSqlServer, altere o nome da cadeia de conexão de MyDbConnection para AZURE_SQL_CONNECTIONSTRING. É aqui que a cadeia de conexão é usada pelo aplicativo de exemplo.
  3. Remova o método builder.Services.AddDistributedMemoryCache(); e o substitua pelo código a seguir. Ele altera o código do uso de um cache na memória para o cache Redis no Azure e faz isso usando AZURE_REDIS_CONNECTIONSTRING de antes.
builder.Services.AddStackExchangeRedisCache(options =>
{
options.Configuration = builder.Configuration["AZURE_REDIS_CONNECTIONSTRING"];
options.InstanceName = "SampleInstance";
});

Uma captura de tela mostrando o nome da cadeia de conexão alterado no Program.cs.

Etapa 7:

  1. Abra .github/workflows/main_msdocs-core-sql-XYZ no explorer. Esse arquivo foi criado pelo assistente de criação do Serviço de Aplicativo.
  2. Na etapa dotnet publish, adicione uma etapa para instalar a ferramenta Entity Framework Core com o comando dotnet tool install -g dotnet-ef --version 7.0.14.
  3. Na nova etapa, adicione outra etapa para gerar um pacote de migração de banco de dados no pacote de implantação: dotnet ef migrations bundle --runtime linux-x64 -p DotNetCoreSqlDb/DotNetCoreSqlDb.csproj -o ${{env.DOTNET_ROOT}}/myapp/migrate. O pacote de migração é um executável autossuficiente que você pode executar no ambiente de produção sem precisar do SDK do .NET. O contêiner do Linux do Serviço de Aplicativo tem apenas o runtime do .NET e não o SDK do .NET.

Uma captura de tela mostrando as etapas adicionadas ao arquivo de fluxo de trabalho do GitHub para o pacote de migração de banco de dados.

Etapa 8:

  1. Selecione a extensão Controle do código-fonte.
  2. Na caixa de texto, digite uma mensagem de commit, como Configure DB & Redis & add migration bundle.
  3. Selecione Fazer commit e efetuar push.

Uma captura de tela mostrando as alterações em que está sendo feito commit e que estão sendo enviadas por push ao GitHub.

Etapa 9: de volta à página Centro de Implantação no portal do Azure:

  1. Selecione Logs. Uma nova execução de implantação já foi iniciada após as alterações confirmadas.
  2. No item de log da execução da implantação, selecione a entrada Compilar/Implantar Logs com o carimbo de data/hora mais recente.

Uma captura de tela que mostra como abrir logs de implantação no Centro de Implantação.

Etapa 10: você será levado para o repositório do GitHub e verá que a ação do GitHub está em execução. O arquivo do fluxo de trabalho define dois estágios separados, compilar e implantar. Aguarde a execução do GitHub para mostrar um status de Concluído. Isso pode demorar alguns minutos.

Uma captura de tela mostrando uma execução do GitHub em andamento.

4. Gerar esquema de banco de dados

Com o Banco de Dados SQL protegido pela rede virtual, a maneira mais fácil de executar migrações de banco de dados do dotnet é em uma sessão do SSH com o contêiner do Serviço de Aplicativo.

Etapa 1: na página Serviço de Aplicativo, no menu à esquerda, selecione SSH.

Uma captura de tela que mostra como abrir o shell SSH para seu aplicativo no portal do Azure.

Etapa 2: no terminal SSH:

  1. Execute cd /home/site/wwwroot. Aqui estão todos os arquivos implantados.
  2. Execute o pacote de migração gerado pelo fluxo de trabalho do GitHub com ./migrate. Se ele for bem-sucedido, o Serviço de Aplicativo se conectará com êxito ao banco de dados SQL. Somente as alterações nos arquivos /home podem persistir além das reinicializações do aplicativo. As alterações feitas fora de /home não são persistentes.

Uma captura de tela mostrando os comandos para executar o shell SSH e sua saída.

5. Navegar até o aplicativo

Etapa 1: na página Serviço de Aplicativo:

  1. No menu esquerdo, selecione Visão geral.
  2. Selecione a URL do aplicativo. Você também pode navegar diretamente até https://<app-name>.azurewebsites.net.

Captura de tela que mostra como inicializar um Serviço de Aplicativo no portal do Azure.

Etapa 2: adicione algumas tarefas à lista. Parabéns, você está executando um aplicativo ASP.NET Core seguro, controlado por dados, no Serviço de Aplicativo do Azure.

Uma captura de tela do aplicativo .NET Core em execução no Serviço de Aplicativo.

Dica

O aplicativo de exemplo implementa o padrão cache-aside. Quando você visita uma exibição de dados pela segunda vez ou recarrega a mesma página depois de fazer alterações de dados, o tempo de processamento na página da Web mostra um tempo muito mais rápido porque está carregando os dados do cache em vez do banco de dados.

6. Logs de diagnóstico de fluxo

O Serviço de Aplicativo do Azure captura todas as mensagens registradas no console para ajudar você a diagnosticar problemas com seu aplicativo. O aplicativo de exemplo gera mensagens de log do console em cada um de seus pontos de extremidade para demonstrar essa funcionalidade.

Etapa 1: na página Serviço de Aplicativo:

  1. No menu à esquerda, selecione Logs do Serviço de Aplicativo.
  2. Em Log do aplicativo, selecione Sistema de arquivos.

Uma captura de tela mostrando como habilitar logs nativos no Serviço de Aplicativo no portal do Azure.

Etapa 2: no menu esquerdo, selecione Fluxo de log. Você verá os logs do seu aplicativo, incluindo os logs de plataforma e os logs de dentro do contêiner.

Captura de tela mostrando como exibir o fluxo de logs no portal do Azure.

7. Limpar os recursos

Quando tiver terminado, você poderá excluir todos os recursos de sua assinatura do Azure ao excluir o grupo de recursos.

Etapa 1: na barra de pesquisa, na parte superior do portal do Azure:

  1. Insira o nome do grupo de recursos.
  2. Selecione o grupo de recursos.

Uma captura de tela mostrando como pesquisar e navegar para um grupo de recursos no portal do Azure.

Etapa 2: na página Grupo de recursos, selecione Excluir grupo de recursos.

Uma captura de tela mostrando o local do botão Excluir Grupo de Recursos no portal do Azure.

Etapa 3:

  1. Insira o nome do grupo de recursos para confirmar a exclusão.
  2. Selecione Excluir.

Uma captura de tela do diálogo de confirmação para excluir um grupo de recursos no portal do Azure. :

Perguntas frequentes

Quanto custa essa configuração?

O preço dos recursos de criação é o seguinte:

  • O plano do Serviço de Aplicativo é criado na camada Básica e pode ser ampliado ou reduzido. Confira Preço do Serviço de Aplicativo.
  • O Banco de Dados SQL do Azure é criado na camada sem servidor de uso geral no hardware da série Standard com o número mínimo de núcleos. Há um pequeno custo e ele pode ser distribuído para outras regiões. Você pode minimizar ainda mais o custo reduzindo o tamanho máximo ou dimensioná-lo ajustando a camada de serviço, a camada de computação, a configuração de hardware, o número de núcleos, o tamanho do banco de dados e a redundância de zona. Consulte Preços do Banco de Dados SQL do Azure.
  • O Cache do Azure para Redis é criado na camada Básico com o tamanho mínimo do cache. Há um pequeno custo associado a essa camada. Você pode dimensioná-la para níveis de desempenho mais altos para maior disponibilidade, clustering e outros recursos. Consulte Preço do Cache do Azure para Redis.
  • A rede virtual não incorre em cobrança, a menos que você configure uma funcionalidade extra, como emparelhamento. Consulte os Preços da Rede Virtual do Azure.
  • A zona DNS privada incorre em uma pequena cobrança. Consulte os Preços do DNS do Azure.

Como se conectar ao servidor do Banco de Dados SQL do Azure que está protegido pela rede virtual com outras ferramentas?

  • Para acesso básico de uma ferramenta de linha comando, você pode executar sqlcmd no terminal SSH do aplicativo. O contêiner do aplicativo não vem com sqlcmd, portanto, você deve instalá-lo manualmente. Lembre-se de que o cliente instalado não persiste entre as reinicializações do aplicativo.
  • Para se conectar de um cliente SQL Server Management Studio ou do Visual Studio, o computador precisa estar dentro da rede virtual. Por exemplo, pode ser uma VM do Azure conectada a uma das sub-redes ou um computador em uma rede local que tenha uma conexão VPN site a site com a rede virtual do Azure.

Como o desenvolvimento de aplicativos local funciona com o GitHub Actions?

Use o arquivo de fluxo de trabalho gerado automaticamente do Serviço de Aplicativo como exemplo, cada git push inicia uma nova execução de build e implantação. Em um clone local do repositório do GitHub, você faz as atualizações desejadas efetuarem push para o GitHub. Por exemplo:

git add .
git commit -m "<some-message>"
git push origin main

Como fazer depuração de erros durante a implantação do GitHub Actions?

Se uma etapa falhar no arquivo de fluxo de trabalho do GitHub gerado automaticamente, tente modificar o comando com falha para gerar uma saída mais detalhada. Por exemplo, você pode obter mais saída de qualquer um dos comandos dotnet adicionando a opção -v. Confirme e efetue push das suas alterações para disparar outra implantação para Serviço de Aplicativo.

Próximas etapas

Avance para o próximo tutorial para saber como proteger seu aplicativo com um domínio e um certificado personalizados.

Se preferir, confira outros recursos: