Início Rápido: adicionar sinalizadores de recursos a um serviço em segundo plano .NET
Nesse início rápido, você incorpora a capacidade de gerenciamento de recursos da Configuração de Aplicativos do Azure em um serviço em segundo plano .NET. Você usa a Configuração de Aplicativos do Azure 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 de Aplicativos. O exemplo neste início rápido baseia-se no aplicativo de serviço em segundo plano .NET apresentado no tutorial de configuração dinâmica. Antes de continuar, conclua o tutorial a seguir para criar primeiro um aplicativo de serviço em segundo plano .NET com configuração dinâmica.
Adicionar um sinalizador de recursos
Adicione um sinalizador de recurso chamado Beta ao repositório da Configuração de Aplicativos e deixe o Rótulo e a Descrição com seus valores padrão. Para mais informações sobre como adicionar sinalizadores de recursos a um repositório usando o portal do Azure ou a CLI, acesse Criar um sinalizador de recurso.
Usar o sinalizador de recurso
Adicione referências ao pacote
Microsoft.FeatureManagement
NuGet executando o seguinte comando:dotnet add package Microsoft.FeatureManagement
Execute o seguinte comando para restaurar pacotes do projeto:
dotnet restore
Abra Program.cs e adicione a seguinte instrução:
using Microsoft.FeatureManagement;
Adicione uma chamada ao método
UseFeatureFlags
dentro da chamadaAddAzureAppConfiguration
e registre os serviços de gerenciamento de recursos.// Existing code in Program.cs // ... ... builder.Configuration.AddAzureAppConfiguration(options => { string endpoint = Environment.GetEnvironmentVariable("Endpoint"); options.Connect(new Uri(endpoint), new DefaultAzureCredential()); // 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 // ... ...
Dica
Quando nenhum parâmetro é transmitido ao método
UseFeatureFlags
, ele carrega todos os sinalizadores de recursos sem rótulo no repositório Configuração de Aplicativos. O intervalo de atualização padrão dos sinalizadores de recursos é de 30 segundos. Você pode personalizar esse comportamento com o parâmetroFeatureFlagOptions
. Por exemplo, o snippet de código a seguir carrega apenas sinalizadores de recursos que começam com TestApp: em seu nome de chave e têm o rótulo dev. O código também altera o intervalo de atualização para 5 minutos. Observe que esse intervalo de atualização é separado daquele dos valores-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 construtor do serviço
Worker
para obter instâncias deIConfigurationRefresher
eIFeatureManager
por meio de injeção de 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 método
ExecuteAsync
para registrar uma mensagem dependendo do estado do sinalizador do recurso.O método
TryRefreshAsync
é chamado no início de cada iteração da execução da tarefa para atualizar o sinalizador do recurso. Será autônomo se a janela de intervalo de atualização não for atingida. O operadorawait
não é usado para que os sinalizadores de recursos sejam atualizados sem bloquear a iteração atual da execução da tarefa. Nesse caso, as 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); } }
Compilar e executar o aplicativo localmente
Execute o comando a seguir para criar o aplicativo:
dotnet build
Depois que a construçã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.
Entre no portal do Azure. Escolha Todos os recursos e escolha o repositório de Configuração de Aplicativos que você criou anteriormente.
Selecione Gerenciador de recursos e localize o sinalizador de recurso Beta. Habilite o sinalizador marcando a caixa de seleção abaixo de Habilitado.
Aguarde alguns instantes até que o intervalo de atualização passe. Você verá a mensagem de log atualizada.
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. Não exclua acidentalmente grupo de recursos ou recursos incorretos. 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.
- Entre no portal do Azure e selecione Grupos de recursos.
- Na caixa Filtrar por nome..., digite o nome do seu grupo de recursos.
- Na lista de resultados, selecione o nome do grupo de recursos para conferir uma visão geral.
- Selecione Excluir grupo de recursos.
- 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 início rápido, você criou um sinalizador de recurso e o usou com um serviço em segundo plano.
Para habilitar a funcionalidade de gerenciamento de recursos em outros tipos de aplicativos, continue nos tutoriais a seguir.
Para saber mais sobre como gerenciar sinalizadores de recursos na Configuração de Aplicativos do Azure, continue no tutorial a seguir.
Para obter o resumo completo dos recursos da biblioteca de gerenciamento de recursos .NET, continue para o documento a seguir.