Guia de início rápido: adicionar sinalizadores de recursos a um serviço em segundo plano do .NET
Neste início rápido, você incorpora o recurso de gerenciamento de recursos da Configuração de Aplicativo do Azure em um serviço em segundo plano .NET. Você usa a Configuração do Aplicativo para armazenar e gerenciar centralmente seus sinalizadores de recursos.
Pré-requisitos
O suporte ao gerenciamento de recursos estende o recurso de configuração dinâmica na Configuração do aplicativo. O exemplo neste início rápido baseia-se no aplicativo de serviço em segundo plano .NET introduzido no tutorial de configuração dinâmica. Antes de continuar, conclua o tutorial a seguir para criar um aplicativo de serviço em segundo plano .NET com configuração dinâmica primeiro.
Adicionar um sinalizador de recurso
Adicione um sinalizador de recurso chamado Beta à loja de Configuração do Aplicativo e deixe Rótulo e Descrição com seus valores padrão. Para obter mais informações sobre como adicionar sinalizadores de recursos a uma loja usando o portal do Azure ou a CLI, vá para Criar um sinalizador de recurso.
Usar o sinalizador de recurso
Adicione referências ao
Microsoft.FeatureManagement
pacote NuGet executando o seguinte comando:dotnet add package Microsoft.FeatureManagement
Execute o seguinte comando para restaurar pacotes para o seu projeto:
dotnet restore
Abra Program.cs e adicione a seguinte instrução:
using Microsoft.FeatureManagement;
Adicione uma chamada ao
UseFeatureFlags
método dentro da chamada e registre osAddAzureAppConfiguration
serviços de gerenciamento de recursos.// Existing code in Program.cs // ... ... builder.Configuration.AddAzureAppConfiguration(options => { options.Connect(Environment.GetEnvironmentVariable("ConnectionString")); // Use feature flags options.UseFeatureFlags(); // Register the refresher so that the Worker service can consume it through dependency injection builder.Services.AddSingleton(options.GetRefresher()); }); // Register feature management services builder.Services.AddFeatureManagement(); // The rest of existing code in Program.cs // ... ...
Gorjeta
Quando nenhum parâmetro é passado para o
UseFeatureFlags
método, ele carrega todos os sinalizadores de recursos sem rótulo em sua loja de configuração de aplicativos. O intervalo de atualização padrão dos sinalizadores de recursos é de 30 segundos. Você pode personalizar esse comportamento por meio doFeatureFlagOptions
parâmetro. Por exemplo, o trecho de código a seguir carrega apenas sinalizadores de recursos que começam com TestApp: em seu nome de chave e tem o rótulo dev. O código também altera o tempo do intervalo de atualização para 5 minutos. Observe que esse tempo de intervalo de atualização é separado daquele para valores de chave regulares.options.UseFeatureFlags(featureFlagOptions => { featureFlagOptions.Select("TestApp:*", "dev"); featureFlagOptions.CacheExpirationInterval = TimeSpan.FromMinutes(5); });
Abra Worker.cs e adicione a seguinte instrução:
using Microsoft.FeatureManagement;
Atualize o
Worker
construtor do serviço para obter instâncias de eIFeatureManager
através da injeção deIConfigurationRefresher
dependência.public class Worker : BackgroundService { private readonly ILogger<Worker> _logger; private readonly IConfigurationRefresher _refresher; private readonly IFeatureManager _featureManager; public Worker(ILogger<Worker> logger, IConfigurationRefresher refresher, IFeatureManager featureManager) { _logger = logger ?? throw new ArgumentNullException(nameof(logger)); _refresher = refresher ?? throw new ArgumentNullException(nameof(refresher)); _featureManager = featureManager ?? throw new ArgumentNullException(nameof(featureManager)); } // ... ... }
Atualize o
ExecuteAsync
método para registrar uma mensagem dependendo do estado do sinalizador de recurso.O
TryRefreshAsync
método é chamado no início de cada iteração da execução da tarefa para atualizar o sinalizador de recurso. Será um no-op se a janela de tempo do intervalo de atualização não for atingida. Oawait
operador não é usado para que os sinalizadores de recurso sejam atualizados sem bloquear a iteração atual da execução da tarefa. Nesse caso, iterações posteriores da execução da tarefa obterão valor atualizado.protected override async Task ExecuteAsync(CancellationToken stoppingToken) { while (!stoppingToken.IsCancellationRequested) { // Intentionally not await TryRefreshAsync to avoid blocking the execution. _refresher.TryRefreshAsync(stoppingToken); if (_logger.IsEnabled(LogLevel.Information)) { if (await _featureManager.IsEnabledAsync("Beta")) { _logger.LogInformation("[{time}]: Worker is running with Beta feature.", DateTimeOffset.Now); } else { _logger.LogInformation("[{time}]: Worker is running.", DateTimeOffset.Now); } } await Task.Delay(TimeSpan.FromSeconds(30), stoppingToken); } }
Crie e execute o aplicativo localmente
Execute o seguinte comando para criar a aplicação:
dotnet build
Depois que a compilação for concluída com êxito, execute o seguinte comando para executar o aplicativo localmente:
dotnet run
Você deve ver as seguintes saídas no console.
Inicie sessão no portal do Azure. Selecione Todos os recursos e selecione a App Configuration store que criou anteriormente.
Selecione Gerenciador de recursos e localize o sinalizador de recursos Beta . Habilite o sinalizador marcando a caixa de seleção em Habilitado.
Aguarde alguns instantes até que a janela de tempo do intervalo de atualização passe. Você verá a mensagem de log atualizada.
Clean up resources (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.
- Entre no portal do Azure e selecione Grupos de recursos.
- Na caixa Filtrar por nome, introduza o nome do seu grupo de recursos.
- Na lista de resultados, selecione o nome do grupo de recursos para ver uma visão geral.
- Selecione Eliminar grupo de recursos.
- É-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 início rápido, você criou um sinalizador de recurso e o usou com um serviço em segundo plano.
Para habilitar o recurso de gerenciamento de recursos para outros tipos de aplicativos, continue para os tutoriais a seguir.
Para saber mais sobre como gerenciar sinalizadores de recursos na Configuração do Aplicativo do Azure, continue para o tutorial a seguir.
Para obter o resumo completo dos recursos da biblioteca de gerenciamento de recursos do .NET, continue para o documento a seguir.