Partilhar via


Início rápido: Adicionar flags de funcionalidade a uma aplicação Aspire

Neste quickstart, irá criar uma feature flag na Azure App Configuration e usá-la para controlar dinamicamente a disponibilidade de uma nova página web numa aplicação Aspire, sem ter de a reiniciar ou reimplementar.

O suporte ao gerenciamento de recursos estende o recurso de configuração dinâmica na Configuração do aplicativo. O exemplo neste guia de início rápido baseia-se na aplicação Aspire introduzida no tutorial de configuração dinâmica. Antes de continuares, termina primeiro o quickstart e o tutorial para criar uma aplicação Aspire com configuração dinâmica.

Pré-requisitos

Siga os documentos para criar uma solução Aspire com configuração dinâmica.

Criar um marcador de funcionalidade

Adicione um flag de funcionalidade chamado Beta à loja de Configuração de Aplicações (criada nos passos de Pré-requisitos ) e deixe Rótulo e Descrição com os seus valores predefinidos. Para obter mais informações sobre como adicionar sinalizadores de recursos a uma loja usando o portal do Azure ou a CLI, vá para Criar um sinalizador de recurso.

Captura de ecrã da adição de uma feature flag chamada Beta.

Adicione a seguinte chave-valor através da interface do emulador de Configuração de Aplicações.

Key Tipo de conteúdo Valor
.appconfig.featureflag/Beta application/vnd.microsoft.appconfig.ff+json; Charset=UTF-8 {"id":"Beta","enabled":false}

Captura de ecrã de adicionar uma feature flag ao emulador.

Os sinalizadores de funcionalidades são valores-chave especiais que definem as funcionalidades da Microsoft. Os fornecedores de configuração identificam a feature flag pelo seu tipo de conteúdo específico e prefixo de chave. O valor de uma feature flag é um objeto json que segue Microsoft Feature Flag schema.

  • Tipo de conteúdo do sinalizador de funcionalidade: application/vnd.microsoft.appconfig.ff+json;charset=utf-8
  • Prefixo da chave de flag de funcionalidade: .appconfig.featureflag/

Usar um sinalizador de recurso

  1. Aceda ao diretório do projeto Web (criado nos passos de pré-requisitos). Execute o seguinte comando para adicionar o Microsoft.FeatureManagement.AspNetCore pacote Nuget.

    dotnet add package Microsoft.FeatureManagement.AspNetCore
    
  2. Abre Program.cs e adiciona uma chamada ao UseFeatureFlags método dentro da AddAzureAppConfiguration chamada. Você pode se conectar à Configuração do Aplicativo usando o ID do Microsoft Entra (recomendado) ou uma cadeia de conexão. O trecho de código a seguir demonstra o uso do 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();
        });
    

    Sugestão

    Quando nenhum parâmetro é passado ao método UseFeatureFlags, ele carrega todas as feature flags sem rótulo na sua loja de configuração de aplicações. O intervalo de atualização padrão dos sinalizadores de recursos é de 30 segundos. Você pode personalizar esse comportamento por meio do FeatureFlagOptions parâmetro. Por exemplo, o trecho de código a seguir carrega apenas sinalizadores de recursos que começam com TestApp: em seu nome de chave e tem o rótulo dev. O código também altera o tempo do intervalo de atualização para 5 minutos. Observe que esse tempo de intervalo de atualização é separado daquele para valores de chave regulares.

    options.UseFeatureFlags(featureFlagOptions =>
    {
        featureFlagOptions.Select("TestApp:*", "dev");
        featureFlagOptions.CacheExpirationInterval = TimeSpan.FromMinutes(5);
    });
    
  3. Adicione a gestão de funcionalidades à coleção de serviços da sua aplicação chamando AddFeatureManagement.

    Atualize-Program.cs com o seguinte código.

    // 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
    // ... ...
    

    Adicione using Microsoft.FeatureManagement; na parte superior do arquivo se ele não estiver presente.

  4. Adicione uma nova página do Razor chamada Beta.razor no diretório 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. Abre _Imports.razor e importa o namespace de gestão de funcionalidades.

    @using Microsoft.FeatureManagement
    
  6. Abre NavMenu.razor no diretório Components/Layout .

    Injeta IVariantFeatureManager no topo do ficheiro.

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

    Adicione o seguinte código.

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

Executar a aplicação localmente

  1. Execute o projeto AppHost. Vai ao painel da Aspire e abre a aplicação web.

    Captura de ecrã de uma aplicação web com três botões na barra lateral.

  2. No portal do Azure, navegue até ao gestor de funcionalidades do seu repositório de Configuração de Aplicações e localize o flag Beta de funcionalidades. Habilite o sinalizador marcando a caixa de seleção em Habilitado.

  3. Atualize a página algumas vezes. Quando o intervalo de atualização passa, a página aparece com conteúdo atualizado.

    Captura de ecrã de uma aplicação web com o botão Beta na barra lateral.

  4. Clica no botão Beta . Vai levar-te à página beta que ativaste dinamicamente.

    Captura de ecrã da página Beta.

Executar a aplicação localmente

  1. Execute o projeto AppHost. Vai ao painel da Aspire e abre a aplicação web.

    Captura de ecrã de uma aplicação web com três botões na barra lateral.

  2. Vá ao emulador, edite o valor do sinalizador de funcionalidade para a habilitar.

    Key Valor
    appconfig.featureflag/Beta {"id":"Beta","enabled":true}
  3. Atualize a página algumas vezes. Quando o intervalo de atualização passa, a página aparece com conteúdo atualizado.

    Captura de ecrã de uma aplicação web com o botão Beta na barra lateral.

  4. Clica no botão Beta . Vai levar-te à página beta que ativaste dinamicamente.

    Captura de ecrã da página Beta.

Próximos passos

Neste quickstart, adicionaste a capacidade de gestão de funcionalidades a uma aplicação Aspire para além da configuração dinâmica. A biblioteca Microsoft.FeatureManagement.AspNetCore oferece integração com aplicações ASP.NET Core, incluindo gestão de funcionalidades nas ações do controlador MVC, páginas Razor, visualizações, rotas e middleware. Para obter o resumo completo dos recursos da biblioteca de gerenciamento de recursos do .NET, continue para o documento a seguir.

Embora um sinalizador de recurso permita que você ative ou desative a funcionalidade em seu aplicativo, convém personalizar um sinalizador de recurso com base na lógica do seu aplicativo. Os filtros de recursos permitem que você habilite um sinalizador de recurso condicionalmente. Para obter mais informações, continue para o tutorial a seguir.

A Configuração de Aplicativo do Azure oferece filtros de recursos internos que permitem ativar um sinalizador de recurso somente durante um período específico ou para um público-alvo específico do seu aplicativo. Para obter mais informações, continue para o tutorial a seguir.

Para ativar a capacidade de gestão de funcionalidades para outros tipos de aplicações, continue com os tutoriais seguintes.

Para saber mais sobre como gerenciar sinalizadores de recursos na Configuração do Aplicativo do Azure, continue para o tutorial a seguir.