Compartilhar via


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

Os dados da Configuração de Aplicativos podem ser carregados como Configurações de Aplicativo em um aplicativo do .NET Framework. Para obter mais informações, confira o Início Rápido. No entanto, como são projetadas pelo .NET Framework, as Configurações do Aplicativo podem ser atualizadas somente após a reinicialização do aplicativo. O provedor .NET da Configuração de Aplicativos é uma biblioteca .NET Standard. Ele dá suporte ao cache e à atualização da 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, você aprenderá como:

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

Pré-requisitos

Adicione um valor-chave

Adicione o valor-chave a seguir ao repositório de Configuração de Aplicativos e deixe os campos Rótulo e Tipo de Conteúdo com seus valores padrão. Para mais informações sobre como adicionar valores-chave a um repositório usando o portal do Azure ou a CLI, acesse Criar um valor-chave.

Chave Valor
TestApp:Settings:Message Dados da Configuração de Aplicativo do Azure

Criar um aplicativo de console .NET Framework

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

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

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

Recarregar os dados da Configuração de Aplicativo

  1. Clique com o botão direito do mouse no projeto e selecione Gerenciar Pacotes do 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 namespaces a seguir.

    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 método Main para se conectar à Configuração de Aplicativos com as opções de atualização especificadas. Conecte-se à Configuração de Aplicativos usando a ID do Microsoft Entra (recomendada) ou uma cadeia de conexão.

    Use a autenticação DefaultAzureCredential no repositório da Configuração de Aplicativos. Siga as instruções para atribuir à credencial a função Leitor de Dados de Configuração de Aplicativo. Certifique-se de permitir tempo suficiente para a permissão se propagar 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 de Aplicativos a recarregar toda a configuração sempre que detectar uma alteração em qualquer um dos valores de chave selecionados (aqueles que começam com o TestApp: e sem rótulo). Para obter mais informações sobre como monitorar alterações de configuração, consulte As práticas recomendadas para atualização de configuração.

    O método SetRefreshInterval especifica o tempo mínimo para fazer uma nova solicitação à Configuração de Aplicativos para verificar se há alterações de configuração. Neste exemplo, você substitui o tempo de expiração padrão de 30 segundos, especificando em lugar dele um tempo de dez segundos, para fins de demonstração.

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

    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 método ConfigureRefresh sozinho não fará com que a configuração seja atualizada automaticamente. Você chama o método TryRefreshAsync da interface IConfigurationRefresher para disparar uma atualização. Esse design serve para evitar solicitações enviadas à Configuração de Aplicativos mesmo quando o aplicativo está ocioso. É possível incluir a chamada TryRefreshAsync quando você considerar o aplicativo ativo. Por exemplo, isso pode ocorrer quando você processa uma mensagem de entrada, uma ordem ou uma iteração de uma tarefa complexa. Se o seu aplicativo estiver ativo o tempo todo, ele também pode estar em um temporizador. Neste exemplo, você chamará TryRefreshAsync quando pressionar a tecla Enter. Observe que, mesmo que a chamada TryRefreshAsync falhe por algum motivo, seu aplicativo continuará a usar a configuração armazenada em cache. Outra tentativa será feita quando o intervalo de atualização configurado tiver passado e a TryRefreshAsync chamada for disparada pela atividade do aplicativo novamente. A chamada de TryRefreshAsync é uma não operação antes do término do intervalo de atualização configurado, portanto, seu impacto no desempenho é mínimo, mesmo que seja chamado com frequência.

Compilar e executar o aplicativo localmente

  1. Defina uma variável de ambiente.

    Defina uma variável de ambiente nomeada Endpoint para o ponto de extremidade do repositório de Configuração de Aplicativos encontrada sob a visão geral do seu repositório no portal do Azure.

    Se você usar o prompt de comando do Windows, execute o comando a seguir 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 comando a seguir:

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

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

    Local de inicialização do aplicativo

  4. No portal do Azure, navegue até o Explorador de configuração do seu repositório de Configuração de Aplicativos e atualize o valor da chave a seguir.

    Chave Valor
    TestApp:Settings:Message Dados da Configuração de Aplicativos do Azure – Atualizados
  5. De volta ao aplicativo em execução, pressione a tecla Enter para disparar uma atualização e imprimir o valor atualizado na janela do Prompt de Comando ou do PowerShell.

    Atualização local do aplicativo

    Observação

    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 da configuração só será atualizado se pelo menos 10 segundos tiver decorrido desde a última atualização para essa configuração.

Limpar os recursos

Se não deseja continuar usando os recursos criados neste artigo, exclua o grupo de recursos que você criou aqui para evitar encargos.

Importante

A exclusão de um grupo de recursos é irreversível. O grupo de recursos e todos os recursos contidos nele são excluídos permanentemente. Certifique-se de não excluir acidentalmente o grupo de recursos ou recursos errados. Se tiver criado os recursos para este artigo dentro de um grupo de recursos que contém outros recursos que você deseja manter, exclua cada um individualmente do respectivo 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..., digite o nome do seu grupo de recursos.
  3. Na lista de resultados, selecione o nome do grupo de recursos para conferir uma visão geral.
  4. Selecione Excluir grupo de recursos.
  5. Você receberá uma solicitação para confirmar a exclusão do grupo de recursos. Insira o nome do grupo de recursos para confirmar e selecione Excluir.

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

Próximas etapas

Neste tutorial, você permitiu que seu aplicativo .NET Framework atualizasse dinamicamente configurações da Configuração de Aplicativos. Para saber como habilitar a configuração dinâmica em um aplicativo Web ASP.NET (.NET Framework), prossiga para o próximo tutorial:

Para aprender a usar uma identidade gerenciada pelo Azure para simplificar o acesso à Configuração de Aplicativos, prossiga para o próximo tutorial: