Tutorial: Implantar um aplicativo ASP.NET Core e do Banco de Dados SQL do Azure no Serviço de Aplicativo do Azure
Neste tutorial, você aprenderá como implantar um aplicativo ASP.NET Core orientado por dados no Serviço de Aplicativo do Azure e conectar-se a um Banco de Dados SQL do Azure. Você também implantará um Cache Redis do Azure para habilitar o código de cache em seu aplicativo. O Serviço de Aplicativo do Azure é um serviço de hospedagem na Web altamente escalável, auto-corrigido que pode implantar facilmente aplicativos no Windows ou Linux. Embora este 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 requer:
- Uma conta do Azure com uma subscrição ativa. Se não tiver uma conta do Azure, pode criar uma gratuitamente.
- Uma conta GitHub. Você também pode obter um gratuitamente.
Aplicação 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ê cria 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. É o nome usado como parte do nome DNS do seu webapp na forma de
https://<app-name>.azurewebsites.net
. - A região para executar o aplicativo fisicamente no mundo.
- A pilha de tempo de execução para o aplicativo. É onde você seleciona a versão .NET a ser usada para seu aplicativo.
- O plano de hospedagem para o aplicativo. É a camada de preço que inclui o conjunto de recursos e a capacidade de dimensionamento para seu aplicativo.
- O Grupo de Recursos para o aplicativo. Um grupo de recursos permite agrupar (em um contêiner lógico) todos os recursos do Azure necessários 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:
- Insira "banco de dados de aplicativo Web" na barra de pesquisa na parte superior do portal do Azure.
- Selecione o item rotulado Web App + Database sob o título Marketplace . Você também pode navegar diretamente para o assistente de criação.
Etapa 2: Na página Criar Aplicativo Web + Banco de Dados , preencha o formulário da seguinte maneira.
- Grupo de Recursos → Selecione Criar novo e use um nome de msdocs-core-sql-tutorial.
- Região → qualquer região do Azure perto de si.
- Nomeie → msdocs-core-sql-XYZ onde XYZ é qualquer três caracteres aleatórios. Este nome tem de ser exclusivo em todo o Azure.
- Pilha de tempo de execução → .NET 7 (STS).
- Adicionar Cache do Azure para Redis? → Sim.
- Plano de hospedagem → Basic. Quando estiver pronto, você poderá escalar para um nível de preço de produção mais tarde.
- Selecione SQLAzure como o mecanismo de banco de dados. O Banco de Dados SQL do Azure é um mecanismo de banco de dados de plataforma como serviço (PaaS) totalmente gerenciado que está sempre em execução na versão estável mais recente do SQL Server.
- Selecione Rever + criar.
- Após a conclusão da validação, selecione Criar.
Etapa 3: A implantação leva alguns minutos para ser concluída. Quando 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. Um plano Linux na camada Basic é criado.
- Serviço de Aplicativo → Representa seu aplicativo e é executado no plano do Serviço de Aplicativo.
- A rede virtual → integrada ao aplicativo Serviço de Aplicativo e isola o tráfego de rede back-end.
- Pontos de extremidade privados → Pontos de extremidade de acesso para o servidor de banco de dados e o cache Redis na rede virtual.
- Interfaces de rede → Representa endereços IP privados, um para cada um dos pontos de extremidade privados.
- O servidor do Banco de Dados SQL do Azure → Acessível somente por trás de seu ponto de extremidade privado.
- Banco de Dados SQL do Azure → Um banco de dados e um usuário são criados para você no servidor.
- O Cache do Azure para Redis → Acessível somente por trás de seu ponto de extremidade privado.
- Zonas DNS privadas → Habilite a resolução DNS do servidor de banco de dados e do cache Redis na rede virtual.
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. Nesta etapa, localize as cadeias de conexão geradas para mais tarde.
Etapa 1: na página Serviço de Aplicativo, no menu à esquerda, selecione Configuração.
Passo 2:
- Desloque-se para a parte inferior da página e localize AZURE_SQL_CONNECTIONSTRING na secção Cadeias de ligação. Essa cadeia de caracteres foi gerada a partir do novo banco de dados SQL pelo assistente de criação. Para configurar seu aplicativo, esse nome é tudo o que você precisa.
- Além disso, encontre AZURE_REDIS_CONNECTIONSTRING na seção Configurações do aplicativo . Essa cadeia de caracteres foi gerada a partir do novo cache Redis pelo assistente de criação. Para configurar seu aplicativo, esse nome é tudo o que você precisa.
- Se desejar, você pode selecionar o botão Editar à direita de cada configuração e ver ou copiar seu valor.
Mais tarde, você alterará seu aplicativo para usar
AZURE_SQL_CONNECTIONSTRING
eAZURE_REDIS_CONNECTIONSTRING
.
3. Implantar código de exemplo
Nesta etapa, você configurará a implantação do GitHub usando as Ações do GitHub. É 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
um no repositório do GitHub iniciará a ação de compilação e implantação.
Passo 1: Em uma nova janela do navegador:
- Iniciar sessão na sua conta do GitHub.
- Navegar para https://github.com/Azure-Samples/msdocs-app-service-sqldb-dotnetcore.
- Selecionar Bifurcação.
- Selecione Criar bifurcação.
Etapa 2: na página Serviço de Aplicativo, no menu à esquerda, selecione Centro de Implantação.
Etapa 3: Na página Centro de Implantação:
- Em Source, selecione GitHub. Por padrão, as Ações do GitHub são selecionadas como o provedor de compilação.
- Entre na sua conta do GitHub e siga o prompt para autorizar o Azure.
- Em Organização, selecione sua conta.
- No Repositório, selecione msdocs-app-service-sqldb-dotnetcore.
- Em Ramo, selecione principal.
- No menu superior, selecione Salvar. O Serviço de Aplicativo confirma um arquivo de fluxo de trabalho no repositório GitHub escolhido, no
.github/workflows
diretório.
Etapa 4: De volta à página GitHub do exemplo bifurcado, abra o Visual Studio Code no navegador pressionando a .
tecla .
Etapa 5: No Visual Studio Code no navegador:
- Abra DotNetCoreSqlDb/appsettings.json no explorador.
- Altere o nome
MyDbConnection
da cadeia de conexão paraAZURE_SQL_CONNECTIONSTRING
, que corresponde à cadeia de conexão criada no Serviço de Aplicativo anteriormente.
Passo 6:
- Abra DotNetCoreSqlDb/Program.cs no explorador.
- No método, altere o nome
MyDbConnection
daoptions.UseSqlServer
cadeia de conexão paraAZURE_SQL_CONNECTIONSTRING
. É aqui que a cadeia de conexão é usada pelo aplicativo de exemplo. - Remova o
builder.Services.AddDistributedMemoryCache();
método e substitua-o pelo código a seguir. Ele altera seu código de usar um cache na memória para o cache Redis no Azure, e faz isso usandoAZURE_REDIS_CONNECTIONSTRING
o anterior.
builder.Services.AddStackExchangeRedisCache(options =>
{
options.Configuration = builder.Configuration["AZURE_REDIS_CONNECTIONSTRING"];
options.InstanceName = "SampleInstance";
});
Passo 7:
- Abra .github/workflows/main_msdocs-core-sql-XYZ no explorador. Esse arquivo foi criado pelo assistente de criação do Serviço de Aplicativo.
dotnet publish
Na etapa, adicione uma etapa para instalar a ferramenta Entity Framework Core com o comandodotnet tool install -g dotnet-ef --version 7.0.14
.- 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 autônomo que você pode executar no ambiente de produção sem precisar do SDK do .NET. O contêiner linux do Serviço de Aplicativo tem apenas o tempo de execução do .NET e não o SDK do .NET.
8º passo:
- Selecione a extensão Controle do código-fonte.
- Na caixa de texto, digite uma mensagem de confirmação como
Configure DB & Redis & add migration bundle
. - Selecione Confirmar e Enviar.
Etapa 9: De volta à página do Centro de Implantação no portal do Azure:
- Selecionar Registos. Uma nova execução de implantação já foi iniciada a partir de suas alterações confirmadas.
- No item de log para a execução da implantação, selecione a entrada Compilar/Implantar Logs com o carimbo de data/hora mais recente.
Etapa 10: Você é levado ao repositório do GitHub e vê que a ação do GitHub está em execução. O arquivo de fluxo de trabalho define dois estágios separados, build e deploy. Aguarde até que a execução do GitHub mostre um status de Concluído. Esta ação demora alguns minutos.
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 dotnet é em uma sessão SSH com o contêiner do Serviço de Aplicativo.
Passo 1: De volta à página Serviço de Aplicativo, no menu à esquerda, selecione SSH.
Passo 2: No terminal SSH:
- Execute o
cd /home/site/wwwroot
. Aqui estão todos os seus arquivos implantados. - Execute o pacote de migração gerado pelo fluxo de trabalho do GitHub com
./migrate
o . Se for bem-sucedido, o Serviço de Aplicativo está se conectando com êxito ao Banco de Dados SQL. Somente as alterações nos/home
arquivos podem persistir além das reinicializações do aplicativo. As mudanças fora do/home
não são persistentes.
5. Navegue até o aplicativo
Etapa 1: Na página Serviço de Aplicativo:
- No menu à esquerda, selecione Visão geral.
- Selecione o URL do seu aplicativo. Você também pode navegar diretamente para
https://<app-name>.azurewebsites.net
.
Passo 2: Adicione algumas tarefas à lista. Parabéns, você está executando um aplicativo ASP.NET Core seguro orientado por dados no Serviço de Aplicativo do Azure.
Gorjeta
O aplicativo de exemplo implementa o padrão cache-side . 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. Transmitir logs de diagnóstico
O Serviço de Aplicativo do Azure captura todas as mensagens registradas no console para ajudá-lo 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 esse recurso.
Etapa 1: Na página Serviço de Aplicativo:
- No menu à esquerda, selecione Logs do Serviço de Aplicativo.
- Em Registo de aplicações, selecione Sistema de ficheiros.
Passo 2: No menu à esquerda, selecione Log stream. Você vê os logs do seu aplicativo, incluindo logs da plataforma e logs de dentro do contêiner.
7. Limpar os recursos
Quando terminar, pode eliminar todos os recursos da sua subscrição do Azure eliminando o grupo de recursos.
Etapa 1: Na barra de pesquisa na parte superior do portal do Azure:
- Insira o nome do grupo de recursos.
- Selecione o grupo de recursos.
Etapa 2: na página do grupo de recursos, selecione Excluir grupo de recursos.
Passo 3:
- Introduza o nome do grupo de recursos para confirmar a sua eliminação.
- Selecione Eliminar.
Perguntas mais frequentes
- Quanto custa esta configuração?
- Como faço para me conectar ao servidor do Banco de Dados SQL do Azure protegido pela rede virtual com outras ferramentas?
- Como funciona o desenvolvimento de aplicativos locais com o GitHub Actions?
- Como depuro erros durante a implantação das Ações do GitHub?
Quanto custa esta 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 dimensionado para cima ou para baixo. Consulte Preços 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 os núcleos mínimos. Há um custo pequeno e pode ser distribuído para outras regiões. Você pode minimizar ainda mais o custo reduzindo seu tamanho máximo ou pode escalá-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. Veja Preços da Base de Dados SQL do Azure.
- O Cache Redis do Azure é criado na camada Básica com o tamanho mínimo do cache. Há um pequeno custo associado a este nível. Você pode dimensioná-lo para níveis de desempenho mais altos para maior disponibilidade, clustering e outros recursos. Consulte Preços 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 Preços da Rede Virtual do Azure.
- A zona DNS privada incorre em uma pequena cobrança. Consulte Preços do DNS do Azure.
Como faço para me conectar ao servidor do Banco de Dados SQL do Azure protegido pela rede virtual com outras ferramentas?
- Para acesso básico a partir de uma ferramenta de linha de comando, você pode executar
sqlcmd
a partir do terminal SSH do aplicativo. O contêiner do aplicativo não vem comsqlcmd
, então você deve instalá-lo manualmente. Lembre-se de que o cliente instalado não persiste nas reinicializações do aplicativo. - Para se conectar a partir de um cliente do SQL Server Management Studio ou do Visual Studio, sua máquina deve estar dentro da rede virtual. Por exemplo, pode ser uma VM do Azure conectada a uma das sub-redes ou uma máquina em uma rede local que tenha uma conexão VPN site a site com a rede virtual do Azure.
Como funciona o desenvolvimento de aplicativos locais com o GitHub Actions?
Tome o arquivo de fluxo de trabalho gerado automaticamente do Serviço de Aplicativo como exemplo, cada git push
um inicia uma nova compilação e execução de implantação. A partir de um clone local do repositório GitHub, você faz com que as atualizações desejadas o enviem para o GitHub. Por exemplo:
git add .
git commit -m "<some-message>"
git push origin main
Como depuro erros durante a implantação das Ações do GitHub?
Se uma etapa falhar no arquivo de fluxo de trabalho GitHub gerado automaticamente, tente modificar o comando failed para gerar uma saída mais detalhada. Por exemplo, você pode obter mais saída de qualquer um dos dotnet
comandos adicionando a -v
opção. Confirme e envie suas alterações por push para disparar outra implantação no Serviço de Aplicativo.
Próximos passos
Avance para o próximo tutorial para saber como proteger seu aplicativo com um domínio e certificado personalizados.
Ou confira outros recursos: