Partilhar via


Tutorial: Usar a configuração dinâmica em um aplicativo .NET Framework

Os dados da Configuração do Aplicativo podem ser carregados como Configurações do Aplicativo em um aplicativo .NET Framework. Para obter mais informações, consulte o guia de início rápido. No entanto, conforme projetado pelo .NET Framework, as Configurações do Aplicativo só podem ser atualizadas após a reinicialização do aplicativo. O provedor .NET de Configuração de Aplicativo é uma biblioteca .NET Standard. Ele suporta cache e atualização de configuração dinamicamente sem reinicialização do aplicativo. Este tutorial mostra como você pode implementar atualizações de configuração dinâmica em um aplicativo de console do .NET Framework.

Neste tutorial, irá aprender a:

  • Configure o seu aplicativo .NET Framework para atualizar a sua configuração em resposta a alterações em um repositório de Configuração de Aplicação.
  • Injete a configuração mais recente em seu aplicativo.

Pré-requisitos

Adicionar um valor-chave

Adicione o seguinte valor-chave à loja de Configuração de Aplicativos e deixe Rótulo e Tipo de Conteúdo com seus valores padrão. Para obter mais informações sobre como adicionar valores-chave a uma loja usando o portal do Azure ou a CLI, vá para Criar um valor-chave.

Chave valor
TestApp:Configurações:Mensagem Dados da Configuração do Aplicativo do Azure

Criar um aplicativo de console do .NET Framework

  1. Inicie o Visual Studio e selecione Criar um novo projeto.

  2. Em Criar um novo projeto, filtre o tipo de projeto Console e selecione Aplicativo de Console (.NET Framework) com C# na lista de modelos de projeto. Pressione Next.

  3. Em Configurar seu novo projeto, insira um nome de projeto. Em Framework, selecione .NET Framework 4.7.2 ou superior. Selecione Criar.

Recarregar dados da Configuração do Aplicativo

  1. Clique com o botão direito do mouse em seu projeto e selecione Gerenciar pacotes NuGet. Na guia Procurar, pesquise e adicione a versão mais recente do seguinte pacote NuGet ao seu projeto.

    • Microsoft.Extensions.Configuration.AzureAppConfiguration
    • Azure.Identity
  2. Abra Program.cs e adicione os seguintes namespaces.

    using Microsoft.Extensions.Configuration;
    using Microsoft.Extensions.Configuration.AzureAppConfiguration;
    using Azure.Identity;
    
  3. Adicione duas variáveis para armazenar objetos relacionados à configuração.

    private static IConfiguration _configuration;
    private static IConfigurationRefresher _refresher;
    
  4. Atualize o Main método para se conectar à Configuração do Aplicativo com as opções de atualização especificadas. Ligue-se ao App Configuration usando Microsoft Entra ID (recomendado) ou uma cadeia de conexão.

    Você usa o DefaultAzureCredential para autenticar na sua loja de configuração de aplicativos. Siga as instruções para atribuir à sua credencial a função de Leitor de Dados de Configuração do Aplicativo. Certifique-se de dar tempo suficiente para que a permissão se propague antes de executar seu aplicativo.

    // Existing code in Program.cs
    // ... ...
    
    static void Main(string[] args)
    {
        var builder = new ConfigurationBuilder();
        builder.AddAzureAppConfiguration(options =>
        {
            string endpoint = Environment.GetEnvironmentVariable("Endpoint"); 
            options.Connect(new Uri(endpoint), new DefaultAzureCredential())
                   // Load all keys that start with `TestApp:` and have no label.
                   .Select("TestApp:*")
                   // Reload configuration if any selected key-values have changed.
                   .ConfigureRefresh(refresh =>
                   {
                       refresh.RegisterAll()
                              .SetRefreshInterval(TimeSpan.FromSeconds(10));
                   });
    
            _refresher = options.GetRefresher();
        });
    
        _configuration = builder.Build();
        PrintMessage().Wait();
    }
    
    // The rest of existing code in Program.cs
    // ... ...
    

    Dentro do ConfigureRefresh método, você chama o RegisterAll método para instruir o provedor de Configuração do Aplicativo a recarregar toda a configuração sempre que detetar uma alteração em qualquer um dos valores-chave selecionados (aqueles que começam com TestApp: e não têm rótulo). Para obter mais informações sobre como monitorar alterações de configuração, consulte Práticas recomendadas para atualização de configuração.

    O SetRefreshInterval método especifica o tempo mínimo que deve decorrer antes que uma nova solicitação seja feita à Configuração do Aplicativo para verificar se há alterações na configuração. Neste exemplo, você substitui o tempo de expiração padrão de 30 segundos, especificando um tempo de 10 segundos para fins de demonstração.

  5. Adicione um método chamado PrintMessage() que dispara uma atualização de dados de configuração da Configuração do aplicativo.

    private static async Task PrintMessage()
    {
        Console.WriteLine(_configuration["TestApp:Settings:Message"] ?? "Hello world!");
    
        // Wait for the user to press Enter
        Console.ReadLine();
    
        await _refresher.TryRefreshAsync();
        Console.WriteLine(_configuration["TestApp:Settings:Message"] ?? "Hello world!");
    }
    

    Chamar o ConfigureRefresh método sozinho não fará com que a configuração seja atualizada automaticamente. Você chama o TryRefreshAsync método da interface IConfigurationRefresher para disparar uma atualização. Esse design é para evitar solicitações enviadas para a Configuração do aplicativo mesmo quando seu aplicativo está ocioso. Você pode incluir a TryRefreshAsync chamada onde você considera seu aplicativo ativo. Por exemplo, pode ser quando você processa uma mensagem de entrada, um pedido ou uma iteração de uma tarefa complexa. Ele também pode estar em um temporizador se seu aplicativo estiver ativo o tempo todo. Neste exemplo, você chama TryRefreshAsync quando pressiona a tecla Enter. Observe que, mesmo se a chamada TryRefreshAsync falhar por qualquer motivo, seu aplicativo continuará a usar a configuração em cache. Outra tentativa será feita quando o intervalo de atualização configurado tiver passado e a chamada for acionada novamente pela atividade do aplicativo TryRefreshAsync. A chamada TryRefreshAsync é um no-op antes do intervalo de atualização configurado passar, portanto, seu impacto no desempenho é mínimo, mesmo que seja chamado com frequência.

Crie e execute o aplicativo localmente

  1. Defina uma variável de ambiente.

    Defina uma variável de ambiente nomeada Endpoint para o ponto de extremidade da sua loja de Configuração de Aplicativos encontrado em Visão geral da sua loja no portal do Azure.

    Se você usar o prompt de comando do Windows, execute o seguinte comando e reinicie o prompt de comando para permitir que a alteração entre em vigor:

    setx Endpoint "<endpoint-of-your-app-configuration-store>"
    

    Se você usar o PowerShell, execute o seguinte comando:

    $Env:Endpoint = "<endpoint-of-your-app-configuration-store>"
    

    Se você usa macOS ou Linux, execute o seguinte comando:

    export Endpoint='<endpoint-of-your-app-configuration-store>'
    
  2. Reinicie o Visual Studio para permitir que a alteração entre em vigor.

  3. Pressione Ctrl + F5 para criar e executar o aplicativo de console.

    Inicialização local do aplicativo

  4. No portal do Azure, navegue até o Gerenciador de configurações do seu repositório de configuração de aplicativos e atualize o valor da chave a seguir.

    Chave valor
    TestApp:Configurações:Mensagem Dados da Configuração do Aplicativo do Azure - Atualizado
  5. De volta na aplicação em execução, pressione a tecla Enter para executar uma atualização e mostrar o valor atualizado na janela do Prompt de Comando ou PowerShell.

    Atualização do aplicativo local

    Nota

    Como o intervalo de atualização foi definido como 10 segundos usando o SetRefreshInterval método ao especificar a configuração para a operação de atualização, o valor para a definição de configuração só será atualizado se pelo menos 10 segundos tiverem decorrido desde a última atualização para essa configuração.

Limpar recursos

Se não quiser continuar a utilizar os recursos criados neste artigo, elimine o grupo de recursos que criou aqui para evitar cobranças.

Importante

A eliminação de um grupo de recursos é irreversível. O grupo de recursos e todos os recursos nele contidos são excluídos permanentemente. Certifique-se de não excluir acidentalmente o grupo de recursos ou recursos errados. Se você criou os recursos para este artigo dentro de um grupo de recursos que contém outros recursos que deseja manter, exclua cada recurso individualmente de seu respetivo painel em vez de excluir o grupo de recursos.

  1. Entre no portal do Azure e selecione Grupos de recursos.
  2. Na caixa Filtrar por nome, introduza o nome do seu grupo de recursos.
  3. Na lista de resultados, selecione o nome do grupo de recursos para ver uma visão geral.
  4. Selecione Eliminar grupo de recursos.
  5. É-lhe pedido que confirme a eliminação do grupo de recursos. Insira o nome do grupo de recursos a ser confirmado e selecione Excluir.

Após alguns momentos, o grupo de recursos e todos os seus recursos são excluídos.

Próximos passos

Neste tutorial, você habilitou seu aplicativo .NET Framework para atualizar dinamicamente as definições de configuração da Configuração do aplicativo. Para saber como habilitar a configuração dinâmica em um aplicativo Web ASP.NET (.NET Framework), continue para o próximo tutorial:

Para saber como usar uma identidade gerenciada do Azure para simplificar o acesso à Configuração do Aplicativo, continue para o próximo tutorial: