Freigeben über


Schnellstart: Hinzufügen von Featurekennzeichnungen zu einer Aspire-App

In dieser Schnellstartanleitung erstellen Sie ein Feature-Flag in der Azure-App-Konfiguration und verwenden es, um die Verfügbarkeit einer neuen Webseite in einer Aspire-App dynamisch zu steuern, ohne sie neu zu starten oder erneut bereitzustellen.

Die Unterstützung für die Featureverwaltung stellt eine Erweiterung des Features für die dynamische Konfiguration in App Configuration dar. Das Beispiel in dieser Schnellstartanleitung basiert auf der Aspire-App, die im Lernprogramm zur dynamischen Konfiguration eingeführt wurde. Bevor Sie fortfahren, beenden Sie die Schnellstartanleitung und das Lernprogramm zum Erstellen einer Aspire-App mit dynamischer Konfiguration zuerst.

Voraussetzungen

Folgen Sie den Dokumenten, um eine Aspire-Lösung mit dynamischer Konfiguration zu erstellen.

Erstellen eines Featureflags

Fügen Sie dem App-Konfigurationsspeicher ein Feature-Flag namens Beta hinzu (erstellt in den Schritten Voraussetzungen) und lassen Sie Label und Description mit ihren Standardwerten. Weitere Informationen zum Hinzufügen von Featurekennzeichnungen zu einem Store mithilfe des Azure-Portals oder der CLI finden Sie unter "Erstellen eines Featureflags".

Screenshot des Hinzufügens eines Featurekennzeichnungs namens

Fügen Sie den folgenden Schlüsselwert über die Benutzeroberfläche des App-Konfigurations-Emulators hinzu.

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

Screenshot des Hinzufügens einer Featurekennzeichnung zum Emulator.

Featurekennzeichnungen sind spezielle Schlüsselwerte, die Microsoft-Featurekennzeichnungen definieren. Konfigurationsanbieter identifizieren die Featurekennzeichnung anhand ihres spezifischen Inhaltstyps und Schlüsselpräfixes. Der Wert eines Feature-Flags ist ein json-Objekt, das folgt Microsoft Feature Flag schema.

  • Feature-Flag-Inhaltstyp: application/vnd.microsoft.appconfig.ff+json;charset=utf-8
  • Präfix des Feature-Flag-Schlüssels: .appconfig.featureflag/

Verwenden eines Featureflags

  1. Navigieren Sie zum Verzeichnis des Web Projekts (erstellt in den Schritten "Voraussetzungen "). Führen Sie den folgenden Befehl aus, um das Microsoft.FeatureManagement.AspNetCore Nuget-Paket hinzuzufügen.

    dotnet add package Microsoft.FeatureManagement.AspNetCore
    
  2. Öffnen Sie Program.cs, und fügen Sie innerhalb des UseFeatureFlags Aufrufs einen Aufruf der AddAzureAppConfiguration Methode hinzu. Sie können eine Verbindung mit App Configuration entweder mithilfe von Microsoft Entra ID (empfohlen) oder mit einer Verbindungszeichenfolge herstellen. Der folgende Codeausschnitt veranschaulicht die Verwendung von 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();
        });
    

    Tipp

    Wenn kein Parameter an die UseFeatureFlags Methode übergeben wird, lädt er alle Featurekennzeichnungen ohne Bezeichnung im App-Konfigurationsspeicher. Das standardmäßige Aktualisierungsintervall von Featureflags beträgt 30 Sekunden. Sie können dieses Verhalten über den FeatureFlagOptions-Parameter anpassen. Der folgende Codeausschnitt lädt beispielsweise nur Featureflags, deren Schlüsselname mit TestApp: beginnt und die die Bezeichnung dev haben. Außerdem ändert der Code auch die Intervallzeit der Aktualisierung in 5 Minuten. Beachten Sie, dass diese Intervallzeit für Aktualisierungen von der für reguläre Schlüsselwerte unabhängig ist.

    options.UseFeatureFlags(featureFlagOptions =>
    {
        featureFlagOptions.Select("TestApp:*", "dev");
        featureFlagOptions.CacheExpirationInterval = TimeSpan.FromMinutes(5);
    });
    
  3. Fügen Sie die Featureverwaltung zur Dienstsammlung Ihrer App hinzu, indem Sie AddFeatureManagement aufrufen.

    Aktualisieren Sie Program.cs mit dem folgenden Code.

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

    Fügen Sie oben in der Datei using Microsoft.FeatureManagement; hinzu (sofern noch nicht vorhanden).

  4. Fügen Sie eine neue Razor-Seite namens Beta.razor unter dem Verzeichnis "Komponenten/Seiten " hinzu.

    @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. Öffnen Sie _Imports.razor, und importieren Sie den Featureverwaltungsnamespace.

    @using Microsoft.FeatureManagement
    
  6. Öffnen Sie NavMenu.razor im Verzeichnis "Components/Layout ".

    Am Anfang der Datei einfügen IVariantFeatureManager .

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

    Fügen Sie den folgenden Code hinzu:

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

Lokales Ausführen der App

  1. Führen Sie das AppHost Projekt aus. Wechseln Sie zum Aspire-Dashboard, und öffnen Sie die Web-App.

    Screenshot einer Web-App mit drei Schaltflächen auf der Seitenleiste.

  2. Navigieren Sie im Azure-Portal zum Feature-Manager Ihres App-Konfigurationsspeichers und suchen Sie den "Beta"-Feature-Flag. Aktivieren Sie die Kennzeichnung, indem Sie das Kontrollkästchen unter "Aktiviert" aktivieren.

  3. Aktualisieren Sie die Seite ein paar Mal. Sobald das Zeitfenster für das Aktualisierungsintervall verstrichen ist, wird die Seite mit aktualisierten Inhalten angezeigt.

    Screenshot einer Web-App mit Beta-Schaltfläche auf der Seitenleiste.

  4. Klicken Sie auf die Schaltfläche "Beta ". Es bringt Sie zu der Betaseite, die Sie dynamisch aktiviert haben.

    Screenshot der Betaseite.

Lokales Ausführen der App

  1. Führen Sie das AppHost Projekt aus. Wechseln Sie zum Aspire-Dashboard, und öffnen Sie die Web-App.

    Screenshot einer Web-App mit drei Schaltflächen auf der Seitenleiste.

  2. Wechseln Sie zum Emulator, bearbeiten Sie den Wert des Feature-Flags, um den Feature-Flag zu aktivieren.

    Key Wert
    appconfig.featureflag/Beta {"id":"Beta","enabled":true}
  3. Aktualisieren Sie die Seite ein paar Mal. Wenn das Zeitfenster des Aktualisierungsintervalls verstrichen ist, wird die Seite mit aktualisierten Inhalten angezeigt.

    Screenshot einer Web-App mit Beta-Schaltfläche auf der Seitenleiste.

  4. Klicken Sie auf die Schaltfläche "Beta ". Es bringt Sie zu der Betaseite, die Sie dynamisch aktiviert haben.

    Screenshot der Betaseite.

Nächste Schritte

In diesem Schnellstart haben Sie eine Funktion zur Verwaltung von Features zu einer Aspire-App zusätzlich zur dynamischen Konfiguration hinzugefügt. Die Microsoft.FeatureManagement.AspNetCore-Bibliothek bietet Integration in ASP.NET Core-Apps, einschließlich der Featureverwaltung in MVC-Controlleraktionen, Razor Pages, Views, Routen und Middleware. Eine vollständige Übersicht über die .NET-Featureverwaltungsbibliothek finden Sie im folgenden Dokument.

Mit einem Featureflag können Sie zwar Funktionen in Ihrer App aktivieren oder deaktivieren, Sie können ein Featureflag aber auch basierend auf der Logik Ihrer App anpassen. Mit Featurefiltern können Sie ein Featureflag bedingt aktivieren. Weitere Informationen erhalten Sie im folgenden Tutorial.

Azure App Configuration bietet integrierte Featurefilter, mit denen Sie ein Featureflag nur während eines bestimmten Zeitraums oder für eine bestimmte Zielgruppe Ihrer App aktivieren können. Weitere Informationen erhalten Sie im folgenden Tutorial.

Um die Featureverwaltungsfunktion für andere Arten von Apps zu aktivieren, fahren Sie mit den folgenden Lernprogrammen fort.

Weitere Informationen zum Verwalten von Featureflags in Azure App Configuration erhalten Sie im folgenden Tutorial.