Tutorial: Uso de la configuración dinámica en una aplicación de .NET Framework

Los datos de App Configuration pueden cargarse como configuración de aplicación en una aplicación de .NET Framework. Para obtener más información, consulte el inicio rápido. Sin embargo, según el diseño de .NET Framework, la configuración de la aplicación solo se puede actualizar tras el reinicio de la aplicación. El proveedor .NET de App Configuration es una biblioteca .NET Standard. Admite el almacenamiento en caché y la actualización dinámica de la configuración sin reiniciar la aplicación. Este tutorial le muestra cómo puede implementar las actualizaciones de configuración dinámica en una aplicación de consola de .NET Framework.

En este tutorial, aprenderá a:

  • Configurar la aplicación de .NET Framework para actualizar su configuración en respuesta a los cambios en un almacén de App Configuration.
  • Insertar la configuración más reciente en la aplicación.

Prerrequisitos

Creación de un almacén de App Configuration

  1. Para crear un almacén de App Configuration, inicie sesión en Azure Portal. En la esquina superior izquierda de la página principal, seleccione Crear un recurso. En el cuadro Buscar en Marketplace, escriba App Configuration y presione Entrar.

    Buscar App Configuration

  2. Seleccione Configuración de la aplicación en los resultados de la búsqueda y, después, Crear.

    Seleccionar Crear

  3. En el panel Crear de App Configuration, introduzca la siguiente configuración:

    Configuración Valor sugerido Descripción
    Suscripción Su suscripción Seleccione la suscripción de Azure que desee usar para probar App Configuration. Si su cuenta solo tiene una suscripción, se selecciona automáticamente y la lista Suscripción no aparece.
    Grupos de recursos AppConfigTestResources Seleccione o cree un grupo de recursos para el recurso del almacén de App Configuration. Este grupo es útil para organizar los distintos recursos que quiera eliminar al mismo tiempo mediante la eliminación del grupo de recursos. Para más información, consulte Administración de los recursos de Azure a través del Portal.
    Nombre del recurso Nombre único globalmente Escriba un nombre de recurso único para usarlo como recurso de almacén de App Configuration. El nombre debe ser una cadena de entre 5 y 50 caracteres y solo puede contener números, letras y el carácter -. El nombre no puede comenzar ni terminar con el carácter -.
    Ubicación Centro de EE. UU. Use Ubicación para especificar la ubicación geográfica en la que se hospeda el almacén de App Configuration. Para optimizar el rendimiento, cree el recurso en la misma región que los demás componentes de la aplicación.
    Plan de tarifa Gratis Seleccione el plan de tarifa deseado. Para más información, consulte la página de precios de App Configuration.
  4. Seleccione Revisar y crear para validar la configuración.

  5. Seleccione Crear. La implementación puede tardar unos minutos.

  6. Una vez finalizada la implementación, vaya al recurso de App Configuration. Seleccione Configuración > Claves de acceso. Tome nota de la cadena de conexión de la clave de solo lectura principal. Usará esta cadena de conexión más adelante para configurar la aplicación y que se comunique con el almacén de Azure App Configuration que ha creado.

  1. Seleccione Explorador de configuración > + Crear > Clave-valor para agregar los siguientes clave-valor:

    Key Value
    TestApp:Settings:Message Datos de Azure App Configuration

    Deje Etiqueta y Tipo de contenido vacíos.

Creación de una aplicación de consola de .NET Framework

  1. Inicie Visual Studio y seleccione Crear un proyecto.

  2. En Crear un proyecto, filtre por el tipo de proyecto Consola y seleccione Aplicación de consola (.NET Framework) con C# de la lista de plantillas de proyecto. Presione Siguiente.

  3. En Configurar el nuevo proyecto, asígnele al proyecto un nombre. En Marco, seleccione .NET Framework 4.7.2 o una versión posterior. Pulse Crear.

Recarga de datos de App Configuration

  1. Haga clic con el botón derecho en el proyecto y seleccione Administrar paquetes NuGet. En la pestaña Examinar, busque y agregue la versión más reciente del siguiente paquete NuGet al proyecto.

    Microsoft.Extensions.Configuration.AzureAppConfiguration

  2. Abra el archivo Program.cs y agregue los siguientes espacios de nombres.

    using Microsoft.Extensions.Configuration;
    using Microsoft.Extensions.Configuration.AzureAppConfiguration;
    
  3. Agregue dos variables para almacenar los objetos relacionados con la configuración.

    private static IConfiguration _configuration;
    private static IConfigurationRefresher _refresher;
    
  4. Actualice el método Main para conectarse a App Configuration con las opciones de actualización especificadas.

    static void Main(string[] args)
    {
        var builder = new ConfigurationBuilder();
        builder.AddAzureAppConfiguration(options =>
        {
            options.Connect(Environment.GetEnvironmentVariable("ConnectionString"))
                    // Load all keys that start with `TestApp:`.
                    .Select("TestApp:*")
                    // Configure to reload the key 'TestApp:Settings:Message' if it is modified.
                    .ConfigureRefresh(refresh =>
                    {
                        refresh.Register("TestApp:Settings:Message")
                               .SetCacheExpiration(TimeSpan.FromSeconds(10));
                    });
    
            _refresher = options.GetRefresher();
        });
    
        _configuration = builder.Build();
        PrintMessage().Wait();
    }
    

    En el método ConfigureRefresh, se registra una clave dentro del almacén de App Configuration para la supervisión de cambios. El método Register tiene un parámetro booleano refreshAll opcional que se puede usar para indicar si se deben actualizar todos los valores de configuración si cambia la clave registrada. En este ejemplo, solo se actualizará la clave TestApp:Settings:Message. El método SetCacheExpiration especifica el tiempo mínimo que debe transcurrir antes de que se realice una nueva solicitud a App Configuration para comprobar si hay cambios de configuración. En este ejemplo, se reemplaza el tiempo de expiración predeterminado de 30 segundos y se especifica un tiempo de 10 minutos en su lugar para fines de demostración.

  5. Agregue un método denominado PrintMessage() que desencadene una actualización de los datos de configuración de App Configuration.

    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!");
    }
    

    La llamada al método ConfigureRefresh por sí sola no hará que la configuración se actualice automáticamente. El método TryRefreshAsync se llama desde la interfaz IConfigurationRefresher para desencadenar una actualización. Esto es así para evitar que se envíen solicitudes fantasma a App Configuration incluso cuando la aplicación está inactiva. Puede incluir la llamada a TryRefreshAsync donde considere que la aplicación está activa. Por ejemplo, puede ser cuando se procesa un mensaje entrante, un pedido o una iteración de una tarea compleja. También puede ser en un temporizador si la aplicación está activa todo el tiempo. En este ejemplo, llamará a TryRefreshAsync cuando presione la tecla Entrar. Tenga en cuenta que, aunque se produzca un error en la llamada a TryRefreshAsync por cualquier motivo, la aplicación seguirá usando la configuración almacenada en caché. Se realizará otro intento cuando haya pasado el tiempo de expiración de la caché configurada y la actividad de la aplicación vuelva a desencadenar la llamada a TryRefreshAsync. Llamar a TryRefreshAsync es una operación sin efecto antes de que pase el tiempo de expiración de la caché configurada, por lo que su impacto en el rendimiento es mínimo, aunque se llame con frecuencia.

Compilación y ejecución de la aplicación en un entorno local

  1. Establezca una variable de entorno llamada ConnectionString en la cadena de conexión de clave de solo lectura obtenida durante la creación del almacén de App Configuration.

    Si usa el símbolo del sistema de Windows, ejecute el siguiente comando:

    setx ConnectionString "connection-string-of-your-app-configuration-store"
    

    Si usa Windows PowerShell, ejecute el siguiente comando:

    $Env:ConnectionString = "connection-string-of-your-app-configuration-store"
    
  2. Reinicie Visual Studio para permitir que el cambio surta efecto.

  3. Presione Ctrl + F5 para compilar y ejecutar la aplicación de consola.

    Inicio local de la aplicación

  4. En Azure Portal, vaya al Explorador de configuración del almacén de App Configuration y actualice el valor de las claves siguientes.

    Key Value
    TestApp:Settings:Message Datos de Azure App Configuration, actualizados
  5. De vuelta en la aplicación en ejecución, presione la tecla Entrar para desencadenar una actualización e imprimir el valor actualizado en la ventana del símbolo del sistema o de PowerShell.

    Actualización local de la aplicación

    Nota

    Dado que el tiempo de expiración de la caché se estableció en 10 segundos mediante el método SetCacheExpiration al especificar la configuración para la operación de actualización, el valor de la configuración solo se actualizará si han transcurrido al menos 10 segundos desde la última actualización de dicha configuración.

Limpieza de recursos

Si no desea seguir usando los recursos creados 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 no eliminar 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 tutorial, ha habilitado la aplicación de .NET Framework para actualizar dinámicamente la configuración a partir de App Configuration. Para obtener información sobre cómo habilitar la configuración dinámica en una aplicación web de ASP.NET (.NET Framework), continúe con el siguiente tutorial:

Para aprender a usar una identidad administrada de Azure para simplificar el acceso a App Configuration, vaya al siguiente tutorial: