Inicio rápido: Adición de marcas de características a un servicio en segundo plano de .NET
En este inicio rápido, incorporará la funcionalidad de administración de características de Azure App Configuration en un servicio en segundo plano de .NET. Puede usar App Configuration para almacenar y administrar de forma centralizada las marcas de características.
Requisitos previos
La compatibilidad con la administración de características amplía la característica de configuración dinámica en App Configuration. El ejemplo de este inicio rápido se basa en la aplicación de servicio en segundo plano de .NET introducida en el tutorial de configuración dinámica. Antes de continuar, finalice el siguiente tutorial para crear primero una aplicación de servicio en segundo plano de .NET con la configuración dinámica.
Agregar marca de características
Agregue una marca de característica denominada Beta al almacén de App Configuration y deje Etiqueta y descripción con sus valores predeterminados. Para obtener más información sobre cómo agregar marcas de características a un almacén mediante Azure Portal o la CLI, vaya a Creación de una marca de característica.
Uso de la marca de características
Para agregar referencias al paquete NuGet
Microsoft.FeatureManagement
, ejecute el siguiente comando:dotnet add package Microsoft.FeatureManagement
Ejecute el siguiente comando para restaurar los paquetes para el proyecto:
dotnet restore
Abra Program.cs y agregue la siguiente instrucción:
using Microsoft.FeatureManagement;
Agregue una llamada al método
UseFeatureFlags
dentro de la llamadaAddAzureAppConfiguration
y registre los servicios de administración de características.// 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 // ... ...
Sugerencia
Cuando no se pasa ningún parámetro al método
UseFeatureFlags
, carga todas las marcas de características sin etiqueta en el almacén de App Configuration. El intervalo de actualización predeterminado de las marcas de características es de 30 segundos. Puede personalizar este comportamiento a través del parámetroFeatureFlagOptions
. Por ejemplo, el siguiente fragmento de código carga solo las marcas de características que comienzan con TestApp: en su nombre de clave y tienen la etiqueta dev. El código también cambia el intervalo de actualización a 5 minutos. Tenga en cuenta que el intervalo de tiempo de actualización es independiente del de los valores de clave normales.options.UseFeatureFlags(featureFlagOptions => { featureFlagOptions.Select("TestApp:*", "dev"); featureFlagOptions.CacheExpirationInterval = TimeSpan.FromMinutes(5); });
Abra Worker.cs y agregue la siguiente instrucción:
using Microsoft.FeatureManagement;
Actualice el constructor del servicio
Worker
para obtener instancias deIConfigurationRefresher
yIFeatureManager
mediante la inserción de dependencias.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)); } // ... ... }
Actualice el método
ExecuteAsync
para registrar un mensaje en función del estado de la marca de característica.Se llama al método
TryRefreshAsync
al principio de cada iteración de la ejecución de la tarea para actualizar la marca de característica. Será una operación no operativa si no se alcanza el período de tiempo del intervalo de actualización. El operadorawait
no se usa para que las marcas de características se actualicen sin bloquear la iteración actual de la ejecución de la tarea. En ese caso, las iteraciones posteriores de la ejecución de la tarea obtendrán el valor actualizado.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); } }
Compilación y ejecución de la aplicación en un entorno local
Ejecute el siguiente comando para compilar la aplicación:
dotnet build
Una vez que la compilación se haya realizado correctamente, ejecute el siguiente comando para ejecutar la aplicación localmente:
dotnet run
Debería ver las siguientes salidas en la consola.
Inicie sesión en Azure Portal. Seleccione Todos los recursos y, después, elija el almacén de App Configuration que creó.
Seleccione Administrador de características y busque la marca de características Beta. Habilite la marca activando la casilla situada debajo de Habilitado.
Espere unos instantes para que pase el período de tiempo del intervalo de actualización. Verá el mensaje de registro actualizado.
Limpieza de recursos
Si no quiere seguir usando los recursos que se han creado en este artículo, elimine el grupo de recursos que creó aquí para evitar cargos.
Importante
La eliminación de un grupo de recursos es irreversible. El grupo de recursos y todos los recursos que contiene se eliminan permanentemente. Asegúrese de que no elimina por accidente el grupo de recursos o los recursos equivocados. Si creó los recursos para este artículo en un grupo de recursos que contenga los recursos que desee conservar, elimine cada recurso de forma individual desde su panel respectivo, en lugar de eliminar el grupo de recursos.
- Inicie sesión en Azure Portal y después seleccione Grupos de recursos.
- En el cuadro de texto Filtrar por nombre, escriba el nombre del grupo de recursos.
- En la lista resultados, seleccione el nombre del grupo de recursos para ver la información general.
- Seleccione Eliminar grupo de recursos.
- Se le pedirá que confirme la eliminación del grupo de recursos. Escriba el nombre del grupo de recursos para confirmar y seleccione Eliminar.
Transcurridos unos instantes, el grupo de recursos y todos sus recursos se eliminan.
Pasos siguientes
En este inicio rápido, ha creado una marca de características y la ha usado con un servicio en segundo plano.
Para habilitar la funcionalidad de administración de características para otros tipos de aplicaciones, continúe con los siguientes tutoriales.
Para más información sobre la administración de marcas de características en Azure App Configuration, continúe con el siguiente tutorial.
Para obtener la lista completa de características de la biblioteca de administración de características de .NET, continúe con el siguiente documento.