Compartir a través de


Inicio rápido: Adición de marcas de características a una aplicación Aspire

En este inicio rápido, creará una marca de característica en Azure App Configuration y la usará para controlar dinámicamente la disponibilidad de una nueva página web en una aplicación Aspire sin reiniciarla ni volver a implementarla.

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 Aspire introducida en el tutorial de configuración dinámica. Antes de continuar, finalice el inicio rápido y el tutorial para crear una aplicación Aspire con la configuración dinámica primero.

Prerrequisitos

Siga los documentos para crear una solución Aspire con configuración dinámica.

Creación de una marca de características

Agregue una marca de característica denominada Beta al almacén de App Configuration (creado en los pasos de requisitos previos) y deje Etiqueta y Descripción con sus valores predeterminados. Para 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 de la adición de una marca de característica denominada Beta.

Agregue el siguiente valor de clave a través de la interfaz de usuario del emulador de App Configuration.

Key Tipo de contenido Importancia
.appconfig.featureflag/Beta application/vnd.microsoft.appconfig.ff+json; charset=utf-8 {"id":"Beta","enabled":false}

Captura de pantalla de cómo agregar una marca de característica al emulador.

Las marcas de características son valores clave-valor especiales que definen características de Microsoft. Los proveedores de configuración identifican la bandera de característica por su tipo de contenido específico y el prefijo de clave. El valor de un feature flag es un objeto JSON que sigue Microsoft Feature Flag schema.

  • Tipo de contenido de bandera de función: application/vnd.microsoft.appconfig.ff+json;charset=utf-8
  • Prefijo de clave de marca de característica: .appconfig.featureflag/

Uso de una marca de características

  1. Vaya al directorio del proyecto Web (creado en los pasos de requisitos previos). Ejecute el siguiente comando para agregar el Microsoft.FeatureManagement.AspNetCore paquete Nuget.

    dotnet add package Microsoft.FeatureManagement.AspNetCore
    
  2. Abra Program.cs y agregue una llamada al UseFeatureFlags método dentro de la AddAzureAppConfiguration llamada. Puede conectarse a App Configuration mediante Microsoft Entra ID (recomendado) o una cadena de conexión. El siguiente fragmento de código muestra cómo usar Microsoft Entra ID.

    builder.AddAzureAppConfiguration(
        "appconfiguration",
        configureOptions: options =>
        {
            // Load all keys that start with `TestApp:` and have no label.
            options.Select("TestApp:*", LabelFilter.Null);
            // Reload configuration if any key-values have changed.
            options.ConfigureRefresh(refreshOptions =>
                refreshOptions.RegisterAll());
            // Load all feature flags with no label
            options.UseFeatureFlags();
        });
    

    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);
    });
    
  3. Agrega la gestión de características a la colección de servicios de tu aplicación llamando a AddFeatureManagement.

    Actualice Program.cs con el código siguiente.

    // Existing code in Program.cs
    // ... ...
    
    // Add Azure App Configuration middleware to the container of services.
    builder.Services.AddAzureAppConfiguration();
    
    // Add feature management to the container of services.
    builder.Services.AddFeatureManagement();
    
    var app = builder.Build();
    
    // The rest of existing code in program.cs
    // ... ...
    

    Al principio del archivo, agregue using Microsoft.FeatureManagement; si no está presente.

  4. Agregue una nueva página de Razor denominada Beta.razor en el directorio Components/Pages .

    @page "/beta"
    
    @inject IFeatureManager FeatureManager
    
    @if (isBetaEnabled)
    {
        <h1>This is the beta website.</h1>
    } 
    else
    {
        <h1>Not found.</h1>
    }
    
    @code {
        private bool isBetaEnabled;
    
        protected override async Task OnInitializedAsync()
        {
            isBetaEnabled = await FeatureManager.IsEnabledAsync("Beta");
        }
    }
    
  5. Abra _Imports.razor e importe el espacio de nombres de gestión de características.

    @using Microsoft.FeatureManagement
    
  6. Abra NavMenu.razor en el directorio Components/Layout .

    Inserte IVariantFeatureManager en la parte superior del archivo.

    @inject IVariantFeatureManager FeatureManager
    
    <div class="top-row ps-3 navbar navbar-dark">
        <div class="container-fluid">
            <a class="navbar-brand" href="">AspireApp</a>
        </div>
    </div>
    

    Agregue el código siguiente.

    // Existing code
    // ... ...
    <div class="nav-scrollable" onclick="document.querySelector('.navbar-toggler').click()">
        <nav class="nav flex-column">
            // Existing code
            // ... ...
    
            @if (isBetaEnabled)
            {
                <div class="nav-item px-3">
                    <NavLink class="nav-link" href="beta">
                        <span class="bi bi-list-nested" aria-hidden="true"></span> Beta
                    </NavLink>
                </div>
            }
        </nav>
    </div>
    
    @code {
        private bool isBetaEnabled;
    
        protected override async Task OnInitializedAsync()
        {
            isBetaEnabled = await FeatureManager.IsEnabledAsync("Beta");
        }
    }
    

Ejecución de la aplicación de forma local

  1. Ejecute el proyecto AppHost. Vaya al panel de Aspire y abra la aplicación web.

    Captura de pantalla de una aplicación web con tres botones en la barra lateral.

  2. En Azure Portal, vaya al administrador de características de su almacén de App Configuration y busque la marca de características Beta. Habilite la marca activando la casilla en Habilitado.

  3. Actualice la página varias veces. Cuando pase la ventana de tiempo del intervalo de actualización, la página se mostrará con contenido actualizado.

    Captura de pantalla de una aplicación web con el botón Beta en la barra lateral.

  4. Haga clic en el botón Beta . Le llevará a la página beta que habilitó dinámicamente.

    Captura de pantalla de la página Beta.

Ejecución de la aplicación de forma local

  1. Ejecute el proyecto AppHost. Vaya al panel de Aspire y abra la aplicación web.

    Captura de pantalla de una aplicación web con tres botones en la barra lateral.

  2. Vaya al emulador y edite el valor de la marca de características para habilitarlo.

    Key Importancia
    appconfig.featureflag/Beta {"id":"Beta","enabled":true}
  3. Actualice la página varias veces. Cuando pase la ventana de tiempo del intervalo de actualización, la página se mostrará con contenido actualizado.

    Captura de pantalla de una aplicación web con el botón Beta en la barra lateral.

  4. Haga clic en el botón Beta . Le llevará a la página beta que habilitó dinámicamente.

    Captura de pantalla de la página Beta.

Pasos siguientes

En este inicio rápido, ha agregado la funcionalidad de administración de características a una aplicación de Aspire sobre la configuración dinámica. La biblioteca Microsoft.FeatureManagement.AspNetCore ofrece integración con aplicaciones ASP.NET Core, incluida la administración de características en acciones del controlador MVC, páginas de razor, vistas, rutas y middleware. En l siguiente documento encontrará la lista completa de características de la biblioteca de administración de características de .NET.

Aunque una marca de característica permite activar o desactivar la funcionalidad en la aplicación, es posible que quieras personalizar una marca de característica en función de la lógica de la aplicación. Los filtros de características permiten habilitar una marca de característica condicionalmente. Para obtener más información, continúe con el siguiente tutorial.

Azure App Configuration ofrece filtros de características integrados que permiten activar una marca de característica solo durante un período específico o para un público específico de la aplicación. Para obtener más información, continúe con el siguiente tutorial.

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.