Compartilhar via


Início Rápido: Adicionar sinalizadores de recursos a um aplicativo Aspire

Neste início rápido, você criará um sinalizador de recurso na Configuração de Aplicativos do Azure e o usará para controlar dinamicamente a disponibilidade de uma nova página da Web em um aplicativo Aspire sem reiniciá-lo ou reimplantá-lo.

O suporte ao gerenciamento de recursos estende o recurso de configuração dinâmica na Configuração de Aplicativos. O exemplo neste início rápido baseia-se no aplicativo Aspire introduzido no tutorial de configuração dinâmica. Antes de continuar, conclua o início rápido e o tutorial para criar um aplicativo Aspire com configuração dinâmica primeiro.

Pré-requisitos

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

Criar um sinalizador de recurso

Adicione um sinalizador de recurso chamado Beta ao repositório de Configuração de Aplicativos (criado nas etapas de pré-requisitos ) e deixe Rótulo e Descrição com seus valores padrão. Para obter mais informações sobre como adicionar sinalizadores de recursos a um repositório usando o portal do Azure ou a CLI, acesse Criar um sinalizador de recurso.

Captura de tela da adição de um sinalizador de recurso chamado Beta.

Adicione o seguinte par chave-valor através da interface de usuário do emulador de Configuração do Aplicativo.

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

Captura de tela da adição de um sinalizador de recurso ao emulador.

Sinalizadores de recursos são valores-chave especiais que definem sinalizadores de recursos da Microsoft. Os provedores de configuração identificam os sinalizadores de recursos por seu tipo de conteúdo específico e prefixo de chave. O valor de um feature flag é um objeto JSON que segue Microsoft Feature Flag schema.

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

Usar um sinalizador de recurso

  1. Navegue até o Web diretório do projeto (criado nas etapas de pré-requisitos ). Execute o comando a seguir para adicionar o Microsoft.FeatureManagement.AspNetCore pacote Nuget.

    dotnet add package Microsoft.FeatureManagement.AspNetCore
    
  2. Abra Program.cs e adicione uma chamada ao UseFeatureFlags método dentro da AddAzureAppConfiguration chamada. Você pode se conectar à Configuração de Aplicativos usando o Microsoft Entra ID (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();
        });
    

    Dica

    Quando nenhum parâmetro é transmitido ao método UseFeatureFlags, ele carrega todos os sinalizadores de recursos sem rótulo no repositório Configuração de Aplicativos. O intervalo de atualização padrão dos sinalizadores de recursos é de 30 segundos. Você pode personalizar esse comportamento com o parâmetro FeatureFlagOptions. Por exemplo, o snippet de código a seguir carrega apenas sinalizadores de recursos que começam com TestApp: em seu nome de chave e têm o rótulo dev. O código também altera o intervalo de atualização para 5 minutos. Observe que esse intervalo de atualização é separado daquele dos valores-chave regulares.

    options.UseFeatureFlags(featureFlagOptions =>
    {
        featureFlagOptions.Select("TestApp:*", "dev");
        featureFlagOptions.CacheExpirationInterval = TimeSpan.FromMinutes(5);
    });
    
  3. Adicione o gerenciamento de recursos à coleção de serviços do seu aplicativo chamando AddFeatureManagement.

    Atualize Program.cs com o código a seguir.

    // 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; ao início do arquivo se não estiver lá.

  4. Adicione uma nova página razor chamada Beta.razor no diretório Componentes/Páginas .

    @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 o namespace de gerenciamento de recursos.

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

    Injete IVariantFeatureManager na parte superior do arquivo.

    @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 código a seguir.

    // 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 o aplicativo localmente

  1. Execute o projeto AppHost. Vá para o painel do Aspire e abra o aplicativo Web.

    Captura de tela de um aplicativo Web com três botões na barra lateral.

  2. No portal do Azure, navegue até o Gerenciador de Recursos do repositório de Configuração de Aplicativos e localize o sinalizador de recurso Beta . Habilite o sinalizador selecionando a caixa de seleção em Habilitado.

  3. Atualize a página algumas vezes. Quando a janela de tempo do intervalo de atualização passar, a página será exibida com o conteúdo atualizado.

    Captura de tela de um aplicativo Web com o botão Beta na barra lateral.

  4. Clique no botão Beta . Ele levará você para a página beta que você habilitou dinamicamente.

    Captura de tela da página Beta.

Executar o aplicativo localmente

  1. Execute o projeto AppHost. Vá para o painel do Aspire e abra o aplicativo Web.

    Captura de tela de um aplicativo Web com três botões na barra lateral.

  2. Vá para o emulador, edite o valor do sinalizador de recurso para habilitá-lo.

    Key Value
    appconfig.featureflag/Beta {"id":"Beta","enabled":true}
  3. Atualize a página algumas vezes. Quando a janela de tempo do intervalo de atualização passar, a página será exibida com o conteúdo atualizado.

    Captura de tela de um aplicativo Web com o botão Beta na barra lateral.

  4. Clique no botão Beta . Ele levará você para a página beta que você habilitou dinamicamente.

    Captura de tela da página Beta.

Próximas etapas

Neste guia de início rápido, você adicionou a capacidade de gerenciamento de recursos a um aplicativo Aspire, além da configuração dinâmica. A biblioteca Microsoft.FeatureManagement.AspNetCore oferece integração com aplicativos ASP.NET Core, incluindo gerenciamento de recursos em ações do controlador MVC, páginas razor, exibições, rotas e middleware. Para obter o resumo completo dos recursos da biblioteca de gerenciamento de recursos .NET, continue para o documento a seguir.

Embora um sinalizador de recurso permita ativar ou desativar a funcionalidade em seu aplicativo, convém personalizar um sinalizador de recurso com base na lógica do aplicativo. Os filtros de recursos permitem habilitar um sinalizador de recurso condicionalmente. Para saber mais, continue no tutorial a seguir.

A Configuração de Aplicativos 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 saber mais, continue no tutorial a seguir.

Para habilitar a funcionalidade de gerenciamento de recursos para outros tipos de aplicativos, prossiga para os tutoriais a seguir.

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