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.
Verwenden des Featureflags
Fügen Sie Referenzen zu dem
Microsoft.FeatureManagement
NuGet-Paket hinzu, indem Sie den folgenden Befehl ausführen:dotnet add package Microsoft.FeatureManagement
Führen Sie den folgenden Befehl aus, um Pakete für Ihr Projekt wiederherzustellen:
dotnet restore
Öffnen Sie Program.cs, und fügen Sie die folgende Anweisung hinzu:
using Microsoft.FeatureManagement;
Fügen Sie einen Aufruf der Methode
UseFeatureFlags
innerhalb desAddAzureAppConfiguration
-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 denFeatureFlagOptions
-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); });
Öffnen Sie Worker.cs, und fügen Sie die folgende Anweisung hinzu:
using Microsoft.FeatureManagement;
Aktualisieren Sie den Konstruktor des
Worker
-Diensts, um Instanzen vonIConfigurationRefresher
undIFeatureManager
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)); } // ... ... }
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 Operatorawait
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
Führen Sie den folgenden Befehl aus, um die App zu erstellen:
dotnet build
Führen Sie nach der erfolgreichen Erstellung den folgenden Befehl aus, um die App lokal auszuführen:
dotnet run
Die folgenden Ausgaben sollten an der Konsole angezeigt werden.
Melden Sie sich beim Azure-Portal an. Wählen Sie Alle Ressourcen und dann den App Configuration-Speicher aus, den Sie zuvor erstellt haben.
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.
Warten Sie ein paar Augenblicke, bis das Zeitfenster für das Aktualisierungsintervall abgelaufen ist. Die aktualisierte Protokollmeldung wird angezeigt.
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.
- Melden Sie sich beim Azure-Portal an, und klicken Sie auf Ressourcengruppen.
- Geben Sie im Feld Nach Name filtern den Namen Ihrer Ressourcengruppe ein.
- Wählen Sie in der Ergebnisliste den Ressourcengruppennamen aus, um eine Übersicht anzuzeigen.
- Wählen Sie die Option Ressourcengruppe löschen.
- 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
In diesem Schnellstart haben Sie ein Featureflag erstellt und mit einem Hintergrunddienst verwendet.
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.
Eine vollständige Übersicht über die .NET-Featureverwaltungsbibliothek finden Sie im folgenden Dokument.