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
- Use ASP.NET núcleo como um front-end da Web
- Armazenar dados da aplicação num serviço com estado
- Depurar a sua aplicação localmente
- Dimensionar o aplicativo 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 do Azure e ASP.NET e desenvolvimento Web.
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 tempo de execução, SDKs, ferramentas do Visual Studio, Docker e ter 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 você cria o cluster é para que o cluster seja criado com recursos de contêiner habilitados. Se o Docker não estiver em execução, você terá que recriar o cluster para habilitar os recursos do contêiner.
Embora desnecessária para esse início rápido específico, a instrução para que o Docker seja executado quando você cria o cluster é incluída como uma prática recomendada.
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 contêineres
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 gerenciador de cluster 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, você precisa executar o Visual Studio como administrador.
Abra a solução Voting.sln do Visual Studio no repositório que clonou.
Por padrão, o aplicativo de votação 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 você alterar a porta do aplicativo, substitua o novo valor da porta do aplicativo por "8080" ao longo deste artigo.
Para implementar a aplicação, prima F5.
Nota
Na janela de saída do Visual Studio, você verá a mensagem "A URL do aplicativo não está definida ou não é uma URL HTTP/HTTPS para que o navegador não seja aberto para o aplicativo." Esta mensagem não indica um erro, mas que um navegador não será iniciado automaticamente.
Quando a implantação estiver concluída, inicie um navegador e abra http://localhost:8080
para exibir o front-end da Web do aplicativo.
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 você vota no aplicativo, 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 o aplicativo no Visual Studio, você está usando um cluster de desenvolvimento local do Service Fabric. Você pode ajustar 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 persistir os dados entre as sessões de depuração, abra Propriedades do projeto de votação e altere o Modo de Depuração do Aplicativo 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.
Esta etapa é onde o JavaScript no navegador envia uma solicitação para o controlador de API da Web no serviço 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 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.
Agora você está no ponto de interrupção no 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 v2" 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 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 Aplicativo do Service Fabric, marque a caixa de seleção Atualizar o Aplicativo.
Altere o perfil de destino para PublishProfiles\Local.5Node.xml e verifique se Connection Endpoint está definido como Local Cluster.
Selecione Atualizar o aplicativo.
Clique em 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 navegador e navegue até 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.
Próximos passos
Neste início rápido, aprendeu a:
- Criar uma aplicação com .NET e o Service Fabric
- Use ASP.NET núcleo como um front-end da Web
- Armazenar dados da aplicação num serviço com estado
- Depurar a sua aplicação localmente
- Dimensionar o aplicativo 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: