Inicio rápido: Adición de marcas de características a una aplicación web de ASP.NET Core

En este inicio rápido, va a crear una implementación de un extremo a otro de administración de características en una aplicación de ASP.NET Core mediante Azure App Configuration. Podrá usar el servicio App Configuration para almacenar en una ubicación central todas las marcas de características y controlar sus estados.

Las bibliotecas de administración de características de .NET Core amplían la plataforma con una compatibilidad completa con las marcas de características. Estas bibliotecas se compilan sobre el sistema de configuración de .NET Core. Se integran sin problemas con App Configuration a través de su proveedor de configuración de .NET Core.

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 Operaciones > Administrador de características > Agregar para agregar una marca de características denominada Beta.

    Habilitación de la marca de característica denominada Beta

    Deje Etiqueta en blanco, por ahora. Seleccione Aplicar para guardar la nueva marca de características.

Cree una aplicación web ASP.NET Core

Utilice la interfaz de la línea de comandos (CLI) de .NET Core para crear un proyecto de ASP.NET Core MVC. La ventaja de usar la CLI de .NET Core frente a Visual Studio es que está disponible en las plataformas Windows, macOS y Linux.

Ejecute el siguiente comando para crear un proyecto de ASP.NET Core MVC en una nueva carpeta TestFeatureFlags:

dotnet new mvc --no-https --output TestFeatureFlags

Incorporación de Secret Manager

Una herramienta denominada Administrador de secretos almacena información confidencial para el trabajo de desarrollo fuera de su árbol de proyecto. Este enfoque ayuda a evitar el uso compartido accidental de secretos de la aplicación en el código fuente. Complete los pasos siguientes para habilitar el uso del Administrador de secretos en el proyecto de ASP.NET Core:

Desplácese hasta el directorio raíz del proyecto y ejecute el siguiente comando para habilitar el almacenamiento de secretos en el proyecto:

dotnet user-secrets init

Se agrega un elemento UserSecretsId que contiene un GUID al archivo .csproj:

<Project Sdk="Microsoft.NET.Sdk.Web">
    
    <PropertyGroup>
        <TargetFramework>net5.0</TargetFramework>
        <UserSecretsId>79a3edd0-2092-40a2-a04d-dcb46d5ca9ed</UserSecretsId>
    </PropertyGroup>

</Project>

Sugerencia

Para más información sobre el Administrador de secretos, consulte Almacenamiento seguro de secretos de aplicación en el desarrollo en ASP.NET Core.

Conexión a un almacén de App Configuration

  1. Instale los paquetes NuGet Microsoft.Azure.AppConfiguration.AspNetCore y Microsoft.FeatureManagement.AspNetCore mediante la ejecución de los siguientes comandos:

    dotnet add package Microsoft.Azure.AppConfiguration.AspNetCore
    
    dotnet add package Microsoft.FeatureManagement.AspNetCore
    
  2. Ejecute el siguiente comando en el mismo directorio que el archivo .csproj. El comando usa el Administrador de secretos para almacenar un secreto denominado ConnectionStrings:AppConfig, que almacena la cadena de conexión para el almacén de App Configuration. Reemplace el marcador de posición <your_connection_string> por la cadena de conexión del almacén de App Configuration. Puede encontrar la cadena de conexión en Claves de acceso en Azure Portal.

    dotnet user-secrets set ConnectionStrings:AppConfig "<your_connection_string>"
    

    Secret Manager solo se utiliza para probar la aplicación web localmente. Cuando la aplicación se implementa en Azure App Service, usará el valor de la aplicación configuración de la aplicación Cadenas de conexión en App Service, en lugar de Administrador de secretos para almacenar la cadena de conexión.

    Obtenga acceso a este secreto mediante la API de configuración de .NET Core. Un signo de dos puntos (:) funciona en el nombre de configuración con la API de configuración en todas las plataformas compatibles. Para más información, vea Claves y valores de configuración.

  3. En Program.cs, actualice el método CreateWebHostBuilder para usar App Configuration mediante la llamada al método AddAzureAppConfiguration.

    Importante

    CreateHostBuilder reemplaza a CreateWebHostBuilder en .NET Core 3.x. Seleccione la sintaxis correcta en función de su entorno.

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =>
                webBuilder.ConfigureAppConfiguration(config =>
                {
                    var settings = config.Build();
                    var connection = settings.GetConnectionString("AppConfig");
                    config.AddAzureAppConfiguration(options =>
                        options.Connect(connection).UseFeatureFlags());
                }).UseStartup<Startup>());
    

    Con el cambio anterior, el proveedor de configuración de App Configuration se ha registrado con la API de configuración de .NET Core.

  4. En Startup.cs, agregue una referencia al administrador de características de .NET Core:

    using Microsoft.FeatureManagement;
    
  5. Actualice el método Startup.ConfigureServices para agregar compatibilidad con la marca de características mediante una llamada al método AddFeatureManagement. También tiene la opción de incluir cualquier filtro para usar con las marcas de características mediante la llamada a AddFeatureFilter<FilterType>():

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddControllersWithViews();
        services.AddFeatureManagement();
    }
    
  6. Agregue un archivo MyFeatureFlags.cs al directorio raíz del proyecto con el código siguiente:

    namespace TestFeatureFlags
    {
        public enum MyFeatureFlags
        {
            Beta
        }
    }
    
  7. Agregue un archivo BetaController.cs al directorio de Controladores con el código siguiente:

    using Microsoft.AspNetCore.Mvc;
    using Microsoft.FeatureManagement;
    using Microsoft.FeatureManagement.Mvc;
    
    namespace TestFeatureFlags.Controllers
    {
        public class BetaController: Controller
        {
            private readonly IFeatureManager _featureManager;
    
            public BetaController(IFeatureManagerSnapshot featureManager) =>
                _featureManager = featureManager;
    
            [FeatureGate(MyFeatureFlags.Beta)]
            public IActionResult Index() => View();
        }
    }
    
  8. En Views/_ViewImports.cshtml, registre el asistente de etiquetas del administrador de características mediante una directiva de @addTagHelper:

    @addTagHelper *, Microsoft.FeatureManagement.AspNetCore
    

    El código anterior permite el uso del asistente de etiquetas de <feature> en los archivos .cshtml del proyecto.

  9. Abra _Layout.cshtml en el directorio Vistas\Compartido. Busque el código de barras <nav> en <body> > <header>. Inserte una nueva etiqueta <feature> entre los elementos de la barra de navegación Inicio y Privacidad, tal como se muestra en las líneas resaltadas a continuación.

    ms.lasthandoff: 03/29/2021
    ms.locfileid: "98663019"
    ---
    ```html
     //...
    <nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-light bg-white border-bottom box-shadow mb-3">
        <div class="container">
            <a class="navbar-brand" asp-area="" asp-controller="Home" asp-action="Index">TestFeatureFlags</a>
            <button class="navbar-toggler" type="button" data-toggle="collapse" data-target=".navbar-collapse" aria-controls="navbarSupportedContent"
            aria-expanded="false" aria-label="Toggle navigation">
            <span class="navbar-toggler-icon"></span>
            </button>
            <div class="navbar-collapse collapse d-sm-inline-flex flex-sm-row-reverse">
                <ul class="navbar-nav flex-grow-1">
                    <li class="nav-item">
                        <a class="nav-link text-dark" asp-area="" asp-controller="Home" asp-action="Index">Home</a>
                    </li>
                    <feature name="Beta">
                    <li class="nav-item">
                        <a class="nav-link text-dark" asp-area="" asp-controller="Beta" asp-action="Index">Beta</a>
                    </li>
                    </feature>
                    <li class="nav-item">
                        <a class="nav-link text-dark" asp-area="" asp-controller="Home" asp-action="Privacy">Privacy</a>
    
  10. Cree un directorio Views/Beta y un archivo Index.cshtml que contenga el marcado siguiente:

    @{
        ViewData["Title"] = "Beta Home Page";
    }
    
    <h1>This is the beta website.</h1>
    

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

  1. Para compilar la aplicación mediante la CLI de .NET Core, ejecute el siguiente comando en el shell de comandos:

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

    dotnet run
    
  3. Inicie una ventana del explorador y vaya a http://localhost:5000, que es la dirección URL predeterminada de la aplicación web hospedada localmente. Si trabajando en Azure Cloud Shell, seleccione el botón Vista previa web y después Configurar. Cuando se le pida, seleccione el puerto 5000.

    Busque el botón Vista previa web

    El explorador debe mostrar una página similar a la imagen siguiente.

    Aplicación de inicio rápido local antes del cambio

  4. Inicie sesión en Azure Portal. Seleccione Todos los recursos y seleccione la instancia de almacén de App Configuration que creó en el inicio rápido.

  5. Seleccione Administrador de características.

  6. Habilite la marca Beta activando la casilla situada debajo de Habilitado.

  7. Vuelva al shell de comandos. Para cancelar el proceso de dotnet en ejecución, presione CTRL + C. Reinicie la aplicación mediante dotnet run.

  8. Actualice la página del explorador para ver los nuevos valores de configuración.

    Aplicación de inicio rápido local después del cambio

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 inicio rápido, ha creado un almacén de App Configuration y lo ha usado para administrar características en una aplicación web de ASP.NET Core mediante las bibliotecas de administración de características.