Compartir vía


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.

Captura de pantalla que muestra los campos para habilitar una marca de característica denominada Beta.

Uso de la marca de características

  1. Para agregar referencias al paquete NuGet Microsoft.FeatureManagement, ejecute el siguiente comando:

    dotnet add package Microsoft.FeatureManagement
    
  2. Ejecute el siguiente comando para restaurar los paquetes para el proyecto:

    dotnet restore
    
  3. Abra Program.cs y agregue la siguiente instrucción:

    using Microsoft.FeatureManagement;
    
  4. Agregue una llamada al método UseFeatureFlags dentro de la llamada AddAzureAppConfiguration 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ámetro FeatureFlagOptions. 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);
    });
    
  5. Abra Worker.cs y agregue la siguiente instrucción:

    using Microsoft.FeatureManagement;
    
  6. Actualice el constructor del servicio Worker para obtener instancias de IConfigurationRefresher y IFeatureManager 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));
        }
    
        // ... ...
    }
    
  7. 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 operador await 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

  1. Ejecute el siguiente comando para compilar la aplicación:

    dotnet build
    
  2. Una vez que la compilación se haya realizado correctamente, ejecute el siguiente comando para ejecutar la aplicación localmente:

    dotnet run
    
  3. Debería ver las siguientes salidas en la consola.

    Captura de pantalla de la consola con el servicio en segundo plano que se ejecuta con la marca de características deshabilitada.

  4. Inicie sesión en Azure Portal. Seleccione Todos los recursos y, después, elija el almacén de App Configuration que creó.

  5. Seleccione Administrador de características y busque la marca de características Beta. Habilite la marca activando la casilla situada debajo de Habilitado.

  6. Espere unos instantes para que pase el período de tiempo del intervalo de actualización. Verá el mensaje de registro actualizado.

    Captura de pantalla de la consola con el servicio en segundo plano que se ejecuta con la marca de característica habilitada.

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.

  1. Inicie sesión en Azure Portal y después seleccione Grupos de recursos.
  2. En el cuadro de texto Filtrar por nombre, escriba el nombre del grupo de recursos.
  3. En la lista resultados, seleccione el nombre del grupo de recursos para ver la información general.
  4. Seleccione Eliminar grupo de recursos.
  5. 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.