Teilen über


Schnellstart: Hinzufügen von Featureflags zu einem .NET-Hintergrunddienst

In dieser Schnellstartanleitung integrieren Sie die Featureverwaltungsfunktion von Azure App Configuration in einen .NET-Hintergrunddienst. Sie verwenden App Configuration, um Ihre Featureflags zentral zu speichern und zu verwalten.

Voraussetzungen

Die Unterstützung für die Featureverwaltung stellt eine Erweiterung des Features für die dynamische Konfiguration in App Configuration dar. Das Beispiel in diesem Schnellstart baut auf der .NET-Hintergrunddienstapp auf, die im Tutorial zur dynamischen Konfiguration vorgestellt wurde. Bevor Sie fortfahren, schließen Sie zunächst das folgende Tutorial ab, um eine .NET-Hintergrundapp mit dynamischer Konfiguration zu erstellen.

Hinzufügen eines Featureflags

Fügen Sie dem App Configuration-Speicher ein Featureflag mit dem Namen Beta hinzu, und behalten Sie die Standardwerte für Bezeichnung und Beschreibung bei. Weitere Informationen zum Hinzufügen von Featureflags zu einem Speicher mithilfe des Azure-Portals oder der CLI finden Sie unter Erstellen eines Featureflags.

Screenshot, der Felder zum Aktivieren des Featureflags namens „Beta“ zeigt.

Verwenden des Featureflags

  1. Fügen Sie Referenzen zu dem Microsoft.FeatureManagementNuGet-Paket hinzu, indem Sie den folgenden Befehl ausführen:

    dotnet add package Microsoft.FeatureManagement
    
  2. Führen Sie den folgenden Befehl aus, um Pakete für Ihr Projekt wiederherzustellen:

    dotnet restore
    
  3. Öffnen Sie Program.cs, und fügen Sie die folgende Anweisung hinzu:

    using Microsoft.FeatureManagement;
    
  4. Fügen Sie einen Aufruf der Methode UseFeatureFlags innerhalb des AddAzureAppConfiguration-Aufrufs hinzu, und registrieren Sie Featureverwaltungsdienste.

    // Existing code in Program.cs
    // ... ...
    
    builder.Configuration.AddAzureAppConfiguration(options =>
    {
        options.Connect(Environment.GetEnvironmentVariable("ConnectionString"));
    
        // Use feature flags
        options.UseFeatureFlags();
    
        // Register the refresher so that the Worker service can consume it through dependency injection
        builder.Services.AddSingleton(options.GetRefresher());
    });
    
    // Register feature management services
    builder.Services.AddFeatureManagement();
    
    // The rest of existing code in Program.cs
    // ... ...
    

    Tipp

    Wenn kein Parameter an die UseFeatureFlags-Methode übergeben wird, werden alle Featureflags ohne Bezeichnung in Ihren App Configuration-Speicher geladen. 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);
    });
    
  5. Öffnen Sie Worker.cs, und fügen Sie die folgende Anweisung hinzu:

    using Microsoft.FeatureManagement;
    
  6. Aktualisieren Sie den Konstruktor des Worker-Diensts, um Instanzen von IConfigurationRefresher und IFeatureManager durch Abhängigkeitsinjektion abzurufen.

    public class Worker : BackgroundService
    {
        private readonly ILogger<Worker> _logger;
        private readonly IConfigurationRefresher _refresher;
        private readonly IFeatureManager _featureManager;
    
        public Worker(ILogger<Worker> logger, IConfigurationRefresher refresher, IFeatureManager featureManager)
        {
            _logger = logger ?? throw new ArgumentNullException(nameof(logger));
            _refresher = refresher ?? throw new ArgumentNullException(nameof(refresher));
            _featureManager = featureManager ?? throw new ArgumentNullException(nameof(featureManager));
        }
    
        // ... ...
    }
    
  7. Aktualisieren Sie die Methode ExecuteAsync, um eine Nachricht abhängig vom Status des Featureflags zu protokollieren.

    Die Methode TryRefreshAsync wird am Anfang jeder Iteration der Aufgabenausführung aufgerufen, um das Featureflag zu aktualisieren. Wenn das Zeitfenster für das Aktualisierungsintervall nicht erreicht wird, ist dies ein Fehlschlag. Der Operator await wird nicht verwendet, sodass die Featureflags aktualisiert werden, ohne die aktuelle Iteration der Aufgabenausführung zu blockieren. In diesem Fall erhalten spätere Iterationen der Aufgabenausführung den aktualisierten Wert.

    protected override async Task ExecuteAsync(CancellationToken stoppingToken)
    {
        while (!stoppingToken.IsCancellationRequested)
        {
            // Intentionally not await TryRefreshAsync to avoid blocking the execution.
            _refresher.TryRefreshAsync(stoppingToken);
    
            if (_logger.IsEnabled(LogLevel.Information))
            {
                if (await _featureManager.IsEnabledAsync("Beta"))
                {
                    _logger.LogInformation("[{time}]: Worker is running with Beta feature.", DateTimeOffset.Now);
                }
                else
                {
                    _logger.LogInformation("[{time}]: Worker is running.", DateTimeOffset.Now);
                }
            }
    
            await Task.Delay(TimeSpan.FromSeconds(30), stoppingToken);
        }
    }
    

Lokales Erstellen und Ausführen der App

  1. Führen Sie den folgenden Befehl aus, um die App zu erstellen:

    dotnet build
    
  2. Führen Sie nach der erfolgreichen Erstellung den folgenden Befehl aus, um die App lokal auszuführen:

    dotnet run
    
  3. Die folgenden Ausgaben sollten an der Konsole angezeigt werden.

    Screenshot der Konsole mit ausgeführtem Hintergrunddienst mit deaktiviertem Featureflag.

  4. Melden Sie sich beim Azure-Portal an. Wählen Sie Alle Ressourcen und dann den App Configuration-Speicher aus, den Sie zuvor erstellt haben.

  5. Wählen Sie Feature-Manager aus, und suchen Sie das Featureflag Beta. Aktivieren Sie das Flag „Beta“, indem Sie das Kontrollkästchen unter Aktiviert aktivieren.

  6. Warten Sie ein paar Augenblicke, bis das Zeitfenster für das Aktualisierungsintervall abgelaufen ist. Die aktualisierte Protokollmeldung wird angezeigt.

    Screenshot der Konsole mit ausgeführtem Hintergrunddienst mit aktiviertem Featureflag.

Bereinigen von Ressourcen

Wenn Sie die in diesem Artikel erstellten Ressourcen nicht mehr verwenden möchten, löschen Sie die erstellte Ressourcengruppe, um Kosten zu vermeiden.

Wichtig

Das Löschen einer Ressourcengruppe kann nicht rückgängig gemacht werden. Die Ressourcengruppe und alle darin enthaltenen Ressourcen werden unwiderruflich gelöscht. Achten Sie daher darauf, dass Sie nicht versehentlich die falsche Ressourcengruppe oder die falschen Ressourcen löschen. Falls Sie die Ressourcen für diesen Artikel in einer Ressourcengruppe erstellt haben, die andere beizubehaltende Ressourcen enthält, löschen Sie die Ressourcen einzeln über den entsprechenden Bereich, statt die Ressourcengruppe zu löschen.

  1. Melden Sie sich beim Azure-Portal an, und klicken Sie auf Ressourcengruppen.
  2. Geben Sie im Feld Nach Name filtern den Namen Ihrer Ressourcengruppe ein.
  3. Wählen Sie in der Ergebnisliste den Ressourcengruppennamen aus, um eine Übersicht anzuzeigen.
  4. Wählen Sie die Option Ressourcengruppe löschen.
  5. Sie werden aufgefordert, das Löschen der Ressourcengruppe zu bestätigen. Geben Sie zur Bestätigung den Namen Ihrer Ressourcengruppe ein, und klicken Sie auf Löschen.

Daraufhin werden die Ressourcengruppe und alle darin enthaltenen Ressourcen gelöscht.

Nächste Schritte

Fahren Sie mit den folgenden Tutorials fort, um die Featureverwaltung für andere App-Typen zu aktivieren.

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