Compartir a través de


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:

  • Configura tu aplicación de .NET Framework para que actualice su configuración en respuesta a los cambios en un almacén de Configuración de Aplicación.
  • Insertar la configuración más reciente en la aplicación.

Prerrequisitos

Agregar un par clave-valor

Agregue el siguiente par clave-valor al almacén de App Configuration y deje Etiqueta y Tipo de contenido con sus valores predeterminados. Para obtener más información sobre cómo agregar pares clave-valor a un almacén mediante Azure Portal o la CLI, vaya a Creación de un par clave-valor.

Clave Valor
TestApp:Settings:Message Datos de Azure App Configuration

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
    • Azure.Identity
  2. Abra el archivo Program.cs y agregue los siguientes espacios de nombres.

    using Microsoft.Extensions.Configuration;
    using Microsoft.Extensions.Configuration.AzureAppConfiguration;
    using Azure.Identity;
    
  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. Conéctese a App Configuration mediante el identificador de Microsoft Entra (recomendado) o una cadena de conexión.

    Use DefaultAzureCredential para autenticarse en el almacén de App Configuration. Siga las instrucciones para asignar la credencial al rol Lector de datos de App Configuration. Asegúrese de dejar tiempo suficiente para que el permiso se propague antes de ejecutar la aplicación.

    // Existing code in Program.cs
    // ... ...
    
    static void Main(string[] args)
    {
        var builder = new ConfigurationBuilder();
        builder.AddAzureAppConfiguration(options =>
        {
            string endpoint = Environment.GetEnvironmentVariable("Endpoint"); 
            options.Connect(new Uri(endpoint), new DefaultAzureCredential())
                   // Load all keys that start with `TestApp:` and have no label.
                   .Select("TestApp:*")
                   // Reload configuration if any selected key-values have changed.
                   .ConfigureRefresh(refresh =>
                   {
                       refresh.RegisterAll()
                              .SetRefreshInterval(TimeSpan.FromSeconds(10));
                   });
    
            _refresher = options.GetRefresher();
        });
    
        _configuration = builder.Build();
        PrintMessage().Wait();
    }
    
    // The rest of existing code in Program.cs
    // ... ...
    

    Dentro del método ConfigureRefresh, llame al método RegisterAll para indicar al proveedor de App Configuration que vuelva a cargar toda la configuración siempre que detecte un cambio en cualquiera de los pares de clave-valor seleccionados (los que empiezan por TestApp: y no tienen etiqueta). Para obtener más información sobre la supervisión de los cambios de configuración, consulte Procedimientos recomendados para la actualización de la configuración.

    El método SetRefreshInterval 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. Este diseño es para evitar las solicitudes enviadas 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. Puede integrarse a un temporizador si su 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é. Otro intento se realizará cuando se haya superado el intervalo de actualización configurado y la actividad de la aplicación desencadene la TryRefreshAsync llamada de nuevo. Llamar a TryRefreshAsync no tiene efecto antes de que transcurra el intervalo de actualización configurado, por lo que su impacto en el rendimiento es mínimo incluso si se llama con frecuencia.

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

  1. Establezca una variable de entorno.

    Establezca una variable de entorno denominada Endpoint en el punto de conexión del almacén de App Configuration que se encuentra en la Información general del almacén en Azure Portal.

    Si usa el símbolo del sistema de Windows, ejecute el siguiente comando y reinícielo para que se aplique el cambio:

    setx Endpoint "<endpoint-of-your-app-configuration-store>"
    

    Si usa PowerShell, ejecute el siguiente comando:

    $Env:Endpoint = "<endpoint-of-your-app-configuration-store>"
    

    Si usa macOS o Linux, ejecute el siguiente comando:

    export Endpoint='<endpoint-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.

    Clave Valor
    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 intervalo de actualización se estableció en 10 segundos mediante el SetRefreshInterval método mientras se especifica la configuración para la operación de actualización, el valor de la configuración solo se actualizará si al menos 10 segundos han transcurrido desde la última actualización para esa configuración.

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 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: