Udostępnij przez


Szybki start: dodawanie flag funkcji do aplikacji Aspire

W tym szybkim przewodniku utworzysz przełącznik funkcji w usłudze Azure App Configuration i użyjesz go do dynamicznego kontrolowania dostępności nowej strony internetowej w aplikacji Aspire bez konieczności ponownego uruchamiania lub wdrażania.

Obsługa zarządzania funkcjami rozszerza funkcję konfiguracji dynamicznej w usłudze App Configuration. Przykład w tym przewodniku szybkiego startu bazuje na aplikacji Aspire wprowadzonej w samouczku dotyczącym konfiguracji dynamicznej. Przed kontynuowaniem ukończ przewodnik Szybki start i samouczek , aby najpierw utworzyć aplikację Aspire z konfiguracją dynamiczną.

Wymagania wstępne

Postępuj zgodnie z dokumentami, aby utworzyć rozwiązanie Aspire z konfiguracją dynamiczną.

Tworzenie flagi funkcji

Dodaj flagę funkcji o nazwie Beta do magazynu App Configuration (utworzonego w krokach Wymagań Wstępnych), i pozostaw Etykieta i Opis z ich wartościami domyślnymi. Aby uzyskać więcej informacji na temat dodawania flag funkcji do magazynu przy użyciu portalu Azure lub interfejsu wiersza polecenia, przejdź do Tworzenie flagi funkcji.

Zrzut ekranu przedstawiający dodawanie flagi funkcji o nazwie Beta.

Dodaj następującą wartość klucza za pomocą interfejsu użytkownika emulatora usługi App Configuration.

Key Typ zawartości Wartość
.appconfig.featureflag/Beta application/vnd.microsoft.appconfig.ff+json; charset=utf-8 {"id":"Beta","enabled":false}

Zrzut ekranu przedstawiający dodawanie flagi funkcji do emulatora.

Flagi funkcji to specjalne wartości klucza definiujące flagi funkcji firmy Microsoft. Dostawcy konfiguracji identyfikują flagę funkcji według określonego typu zawartości i prefiksu klucza. Wartość flagi funkcji jest obiektem json, który następuje po Microsoft Feature Flag schema.

  • Typ zawartości flagi funkcji: application/vnd.microsoft.appconfig.ff+json;charset=utf-8
  • Prefiks klucza flagi funkcji: .appconfig.featureflag/

Używanie flagi funkcji

  1. Przejdź do katalogu projektu Web (utworzonego w krokach Wymagania wstępne). Uruchom następujące polecenie, aby dodać pakiet NuGet.

    dotnet add package Microsoft.FeatureManagement.AspNetCore
    
  2. Otwórz Program.cs i dodaj wywołanie UseFeatureFlags metody wewnątrz wywołania AddAzureAppConfiguration. Możesz nawiązać połączenie z usługą App Configuration przy użyciu Microsoft Entra ID (zalecane) lub ciągu połączenia. Poniższy fragment kodu przedstawia użycie identyfikatora Entra firmy Microsoft.

    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();
        });
    

    Wskazówka

    Jeśli do metody UseFeatureFlags nie zostanie przekazany żaden parametr, ładowane są wszystkie flagi funkcji bez etykiety we wszystkich konfiguracjach aplikacji. Domyślny interwał odświeżania flag funkcji to 30 sekund. To zachowanie można dostosować za pomocą parametru FeatureFlagOptions . Na przykład poniższy fragment kodu ładuje tylko flagi funkcji rozpoczynające się od aplikacji TestApp: w nazwieklucza i mają etykietę dev. Kod zmienia również czas interwału odświeżania na 5 minut. Należy pamiętać, że ten czas interwału odświeżania jest oddzielony od tego dla zwykłych wartości klucz-wartość.

    options.UseFeatureFlags(featureFlagOptions =>
    {
        featureFlagOptions.Select("TestApp:*", "dev");
        featureFlagOptions.CacheExpirationInterval = TimeSpan.FromMinutes(5);
    });
    
  3. Dodaj zarządzanie funkcjami do kolekcji usług aplikacji, wywołując polecenie AddFeatureManagement.

    Zaktualizuj Program.cs przy użyciu następującego kodu.

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

    Dodaj using Microsoft.FeatureManagement; w górnej części pliku, jeśli nie jest obecny.

  4. Dodaj nową stronę Razor o nazwie Beta.razor w katalogu 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. Otwórz _Imports.razor i zaimportuj przestrzeń nazw zarządzania funkcjami.

    @using Microsoft.FeatureManagement
    
  6. Otwórz plik NavMenu.razor w katalogu Components/Layout .

    Wstrzyknij IVariantFeatureManager na górze pliku.

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

    Dodaj następujący kod.

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

Lokalne uruchamianie aplikacji

  1. Uruchom projekt AppHost. Przejdź do pulpitu nawigacyjnego Aspiruj i otwórz aplikację internetową.

    Zrzut ekranu przedstawiający aplikację internetową z trzema przyciskami na pasku bocznym.

  2. W portalu Azure przejdź do Menedżera Funkcji w sklepie App Configuration i znajdź flagę funkcji Beta. Włącz flagę, zaznaczając pole wyboru w obszarze Włączone.

  3. Odśwież stronę kilka razy. Po upływie przedziału czasu interwału odświeżania strona będzie wyświetlana ze zaktualizowaną zawartością.

    Zrzut ekranu przedstawiający aplikację internetową z przyciskiem Beta na pasku bocznym.

  4. Kliknij przycisk Beta . Przeniesie Cię do strony beta, którą włączyłeś dynamicznie.

    Zrzut ekranu przedstawiający stronę beta.

Lokalne uruchamianie aplikacji

  1. Uruchom projekt AppHost. Przejdź do pulpitu nawigacyjnego Aspiruj i otwórz aplikację internetową.

    Zrzut ekranu przedstawiający aplikację internetową z trzema przyciskami na pasku bocznym.

  2. Przejdź do emulatora, edytuj wartość flagi funkcji, aby ją włączyć.

    Key Wartość
    appconfig.featureflag/Beta {"id":"Beta","enabled":true}
  3. Odśwież stronę kilka razy. Po upływie przedziału czasu interwału odświeżania strona będzie wyświetlana ze zaktualizowaną zawartością.

    Zrzut ekranu przedstawiający aplikację internetową z przyciskiem Beta na pasku bocznym.

  4. Kliknij przycisk Beta . Przeniesie Cię to na stronę beta, którą włączyłeś dynamicznie.

    Zrzut ekranu przedstawiający stronę beta.

Dalsze kroki

W tym szybkim przewodniku dodano możliwość zarządzania funkcjami do aplikacji Aspire obok dynamicznej konfiguracji. Biblioteka Microsoft.FeatureManagement.AspNetCore oferuje integrację z aplikacjami ASP.NET Core, w tym zarządzanie funkcjami w akcjach kontrolera MVC, stronach razor, widokach, trasach oraz middleware. Aby uruchomić pełną funkcję biblioteki zarządzania funkcjami platformy .NET, przejdź do następującego dokumentu.

Flaga funkcji umożliwia aktywowanie lub dezaktywowanie funkcji w aplikacji, ale możesz dostosować flagę funkcji na podstawie logiki aplikacji. Filtry funkcji umożliwiają warunkowe włączenie flagi funkcji. Aby uzyskać więcej informacji, przejdź do następującego samouczka.

aplikacja systemu Azure Configuration oferuje wbudowane filtry funkcji, które umożliwiają aktywowanie flagi funkcji tylko w określonym okresie lub dla określonej docelowej grupy odbiorców aplikacji. Aby uzyskać więcej informacji, przejdź do następującego samouczka.

Aby włączyć funkcję zarządzania funkcjami dla innych typów aplikacji, przejdź do następujących samouczków.

Aby dowiedzieć się więcej na temat zarządzania flagami funkcjonalności w usłudze Azure App Configuration, przejdź do poniższego samouczka.