Início Rápido: Implementar uma aplicação de serviços fiáveis no Service Fabric em .NET
O Azure Service Fabric é uma plataforma de sistemas distribuídos par implementar e gerir microsserviços e contentores dimensionáveis e fiáveis.
Este início rápido mostra como implementar a sua primeira aplicação .NET no Service Fabric. Quando tiver terminado, terá uma aplicação de votações com um front-end da Web ASP.NET que guarda os resultados das votações num serviço de back-end com estado no cluster.
Com esta aplicação, vai aprender a:
- Criar uma aplicação com .NET e o Service Fabric
- Utilizar ASP.NET núcleo como front-end da Web
- Armazenar dados da aplicação num serviço com estado
- Depurar a sua aplicação localmente
- Aumentar horizontalmente a aplicação em vários nós
- Realizar atualizações sem interrupção de aplicações
Pré-requisitos
Para concluir este guia de início rápido:
Instale o Visual Studio 2019 com as cargas de trabalho de desenvolvimento e ASP.NET e desenvolvimento Web do Azure.
Execute o comando seguinte para permitir que o Visual Studio implemente no cluster do Service Fabric local:
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Force -Scope CurrentUser
Compilar um cluster
Depois de instalar o runtime, os SDKs, as ferramentas do Visual Studio, o Docker e o Docker em execução, crie um cluster de desenvolvimento local de cinco nós.
Nota
O motivo para ter o Docker em execução quando cria o cluster é para que o cluster seja criado com as funcionalidades de contentor ativadas. Se o Docker não estiver em execução, terá de recriar o cluster para ativar as funcionalidades do contentor.
Embora seja desnecessário para este início rápido específico, a instrução para que o Docker seja executado quando cria o cluster é incluída como melhor prática.
Teste se o Docker está em execução ao abrir uma janela de terminal e ao executar docker ps
para ver se ocorre um erro. Se a resposta não indicar um erro, o Docker está a ser executado e está pronto para compilar um cluster.
Configurar o Windows 10 ou o Windows Server para contentores
Abra uma nova janela do PowerShell elevada como administrador.
Execute o seguinte comando do PowerShell para criar um cluster de desenvolvimento:
. "C:\Program Files\Microsoft SDKs\Service Fabric\ClusterSetup\DevClusterSetup.ps1"
Execute o seguinte comando para iniciar a ferramenta do gestor de clusters local:
. "C:\Program Files\Microsoft SDKs\Service Fabric\Tools\ServiceFabricLocalClusterManager\ServiceFabricLocalClusterManager.exe"
Nota
O exemplo de aplicação neste guia de introdução utiliza funcionalidades que não estão disponíveis no Windows 7.
Transferir o exemplo
Numa janela do comando, execute o seguinte comando para clonar o repositório da aplicação de exemplo para o seu computador local.
git clone https://github.com/Azure-Samples/service-fabric-dotnet-quickstart
Executar a aplicação localmente
Clique com o botão direito do rato no ícone do Visual Studio, no Menu Iniciar, e escolha Executar como administrador. Para anexar o depurador aos seus serviços, tem de executar o Visual Studio como administrador.
Abra a solução Voting.sln do Visual Studio no repositório que clonou.
Por predefinição, a aplicação voting escuta na porta 8080. A porta da aplicação está definida no ficheiro /VotingWeb/PackageRoot/ServiceManifest.xml. Pode atualizar o atributo Port do elemento Endpoint para alterá-la. Para implementar e executar a aplicação localmente, a porta da aplicação tem de estar aberta e disponível no seu computador. Se alterar a porta da aplicação, substitua o novo valor de porta da aplicação para "8080" ao longo deste artigo.
Para implementar a aplicação, prima F5.
Nota
Na janela de saída do Visual Studio, verá a mensagem "O URL da aplicação não está definido ou não é um URL HTTP/HTTPS, pelo que o browser não será aberto na aplicação". Esta mensagem não indica um erro, mas que um browser não será iniciado automaticamente.
Quando a implementação estiver concluída, inicie um browser e abra-o http://localhost:8080
para ver o front-end da Web da aplicação.
Agora, pode adicionar um conjunto de opções de voto e começar a recolher votos. A aplicação é executada e armazena todos os dados no seu cluster do Service Fabric, sem que seja preciso uma base de dados separada.
Percorrer a aplicação de votação de exemplo
A aplicação de votação é composta por dois serviços:
- Serviço de front-end da Web (VotingWeb) - um serviço de front-end da Web ASP.NET Core, que serve a página Web e expõe as APIs da Web para comunicar com o serviço de back-end.
- Serviço de back-end (VotingData) - um serviço Web ASP.NET Core, que expõe uma API para armazenar os resultados da votação num dicionário fiável que é persistido no disco.
Quando vota na aplicação, ocorrem os seguintes eventos:
Um JavaScript envia o pedido de voto para a API Web no serviço de front-end Web como pedido HTTP PUT.
O serviço de front-end da Web utiliza um proxy para localizar e reencaminhar um pedido HTTP PUT para o serviço de back-end.
O serviço de back-end recebe o pedido de entrada e armazena os resultados atualizados num dicionário fiável, que é replicado para vários nós dentro do cluster e persistido no disco. Todos os dados da aplicação são armazenados no cluster, pelo que não é necessária uma base de dados.
Depurar no Visual Studio
A aplicação deve estar em execução OK, mas pode utilizar o depurador para ver como as partes das chaves do trabalho de aplicação. Ao depurar a aplicação no Visual Studio, está a utilizar um cluster de desenvolvimento do Service Fabric local. Pode ajustar a sua experiência de depuração ao seu cenário. Nesta aplicação, os dados são armazenados no serviço de back-end através de um dicionário fiável. O Visual Studio remove a aplicação por predefinição, quando para o depurador. Remover a aplicação faz com que os dados no serviço de back-end sejam também removidos. Para manter os dados entre sessões de depuração, abra Propriedades do projeto de Votação e altere o Modo de Depuração da Aplicação para Atualização Automática.
Para ver o que acontece no código, conclua os passos seguintes:
Abra o ficheiro /VotingWeb/Controllers/VotesController.cs e defina um ponto de interrupção no método Put da API Web (linha 69). Pode procurar o ficheiro no Explorador de Soluções no Visual Studio.
Abra o ficheiro /VotingData/Controllers/VoteDataController.cs e defina um ponto de interrupção no método Put desta API Web (linha 54).
Regresse ao browser e clique numa opção de votação ou adicione uma opção nova. Atingiu o primeiro ponto de interrupção no controlador de API do front-end da Web.
Este passo é onde o JavaScript no browser envia um pedido para o controlador de API Web no serviço de front-end.
Primeiro, construa o URL para o ReverseProxy para o nosso serviço de back-end (1).
Em seguida, envie o Pedido HTTP PUT para o ReverseProxy (2).
Por último, devolva a resposta do serviço de back-end para o cliente (3).
Prima F5 para continuar
Se lhe for pedido pelo browser, conceda permissões para o Modo de Depuração de leitura e execução ao grupo ServiceFabricAllowedUsers.
Está agora no ponto de interrupção do serviço de back-end.
Na primeira linha no método (1),
StateManager
obtém ou adiciona um dicionário fiável chamadocounts
.Todas as interações com os valores num dicionário fiável requer uma transação; a utilização da declaração (2) cria essa transação.
Na transação, atualize o valor da chave relevante para a opção de votação e consolide a operação (3). Quando é devolvido o método de consolidação, os dados são atualizados no dicionário e replicados para outros nós do cluster. Os dados estão agora armazenados em segurança no cluster e o serviço de back-end pode fazer a ativação pós-falha para outros nós, mantendo os dados disponíveis.
Prima F5 para continuar
Para parar a sessão de depuração, prima Shift + F5.
Realizar atualizações sem interrupção de aplicações
O Service Fabric implementa as atualizações novas na sua aplicação de forma segura. As atualizações sem interrupção evitam períodos de indisponibilidade, bem como reversão automática, caso ocorram erros.
Para atualizar a aplicação, faça o seguinte:
Abra o ficheiro /VotingWeb/Views/Home/Index.cshtml no Visual Studio.
Altere o cabeçalho da página ao adicionar ou atualizar o texto. Por exemplo, altere o cabeçalho para "Exemplo de Aplicação de Votação v” do Service Fabric".
Guarde o ficheiro.
Clique com o botão direito do rato em Voting, no Explorador de Soluções, e escolha Publish (Publicar). É apresentada a caixa de diálogo Publicar.
Clique no botão Manifest Version (Versão do Manifesto) para alterar a versão do serviço e da aplicação.
Altere a versão do elemento Code em VotingWebPkg para "2.0.0", por exemplo, e clique em Save (Guardar).
Na caixa de diálogo Publicar Aplicação do Service Fabric , selecione a caixa de verificação Atualizar a Aplicação.
Altere o Perfil de destino para PublishProfiles\Local.5Node.xml e certifique-se de que o Ponto Final de Ligação está definido como Cluster Local.
Selecione Atualizar a Aplicação.
Clique em Publish (Publicar).
Pode continuar a utilizar a aplicação enquanto a atualização estiver em execução. Uma vez que tem duas instâncias do serviço em execução no cluster, alguns dos seus pedidos poderão receber uma versão atualizada da aplicação e outros continuar a versão antiga.
Abra o browser e navegue para o endereço do cluster na porta 19080. Por exemplo,
http://localhost:19080/
.Clique no nó Applications (Aplicações) na vista de árvore e em Upgrades in Progress (Atualizações em Curso), no painel do lado direito. Pode ver de que forma é que a atualização é aplicada nos domínios de atualização do seu cluster e confirmar que cada domínio está em bom estado de funcionamento antes de avançar para o seguinte. Após o estado de funcionamento de um domínio ter sido verificado, o domínio de atualização aparece a verde na barra de progresso.
O Service Fabric torna as atualizações seguras, ao aguardar dois minutos após atualizar o serviço em cada nó do cluster. A atualização completa deverá demorar aproximadamente oito minutos.
Passos seguintes
Neste início rápido, aprendeu a:
- Criar uma aplicação com .NET e o Service Fabric
- Utilizar ASP.NET núcleo como front-end da Web
- Armazenar dados da aplicação num serviço com estado
- Depurar a sua aplicação localmente
- Aumentar horizontalmente a aplicação em vários nós
- Realizar atualizações sem interrupção de aplicações
Para saber mais sobre o Service Fabric e .NET, veja este tutorial:
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários