Quickstart: Functievlagmen toevoegen aan een .NET-achtergrondservice
In deze quickstart neemt u de functiebeheerfunctie van Azure-app Configuratie op in een .NET-achtergrondservice. U gebruikt App Configuration om uw functievlagmen centraal op te slaan en te beheren.
Vereisten
Ondersteuning voor functiebeheer breidt de dynamische configuratiefunctie in App Configuration uit. Het voorbeeld in deze quickstart is gebaseerd op de .NET Background Service-app die is geïntroduceerd in de zelfstudie voor dynamische configuratie. Voordat u doorgaat, voltooit u de volgende zelfstudie om eerst een .NET-achtergrondservice-app met dynamische configuratie te maken.
Een functievlag toevoegen
Voeg een functievlag met de naam Beta toe aan het App Configuration-archief en laat label en beschrijving ongewijzigd met de standaardwaarden. Ga naar Een functievlag maken voor meer informatie over het toevoegen van functievlagmen aan een winkel met behulp van Azure Portal of de CLI.
De functievlag gebruiken
Voeg verwijzingen toe aan het
Microsoft.FeatureManagement
NuGet-pakket door de volgende opdracht uit te voeren:dotnet add package Microsoft.FeatureManagement
Voer de volgende opdracht uit om pakketten voor uw project te herstellen:
dotnet restore
Open Program.cs en voeg de volgende instructie toe:
using Microsoft.FeatureManagement;
Voeg een aanroep toe aan de
UseFeatureFlags
methode in deAddAzureAppConfiguration
aanroep en registreer functiebeheerservices.// Existing code in Program.cs // ... ... builder.Configuration.AddAzureAppConfiguration(options => { string endpoint = Environment.GetEnvironmentVariable("Endpoint"); options.Connect(new Uri(endpoint), new DefaultAzureCredential()); // 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 // ... ...
Tip
Wanneer er geen parameter wordt doorgegeven aan de
UseFeatureFlags
methode, worden alle functievlagmen geladen zonder label in uw App Configuration-archief. Het standaardvernieuwingsinterval van functievlagmen is 30 seconden. U kunt dit gedrag aanpassen via deFeatureFlagOptions
parameter. Met het volgende codefragment worden bijvoorbeeld alleen functievlagmen geladen die beginnen met TestApp: in hun sleutelnaam en de labeldev. De code wijzigt ook de vernieuwingsintervaltijd in 5 minuten. Houd er rekening mee dat deze vernieuwingsintervaltijd gescheiden is van die voor normale sleutelwaarden.options.UseFeatureFlags(featureFlagOptions => { featureFlagOptions.Select("TestApp:*", "dev"); featureFlagOptions.CacheExpirationInterval = TimeSpan.FromMinutes(5); });
Open Worker.cs en voeg de volgende instructie toe:
using Microsoft.FeatureManagement;
Werk de constructor van de
Worker
service bij om exemplaren vanIConfigurationRefresher
enIFeatureManager
via afhankelijkheidsinjectie te verkrijgen.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)); } // ... ... }
Werk de
ExecuteAsync
methode bij om een bericht te registreren, afhankelijk van de status van de functievlag.De
TryRefreshAsync
methode wordt aangeroepen aan het begin van elke iteratie van de taakuitvoering om de functievlag te vernieuwen. Dit is een no-op als het tijdvenster voor het vernieuwingsinterval niet is bereikt. Deawait
operator wordt niet gebruikt zodat de functievlagmen worden vernieuwd zonder de huidige iteratie van de taakuitvoering te blokkeren. In dat geval krijgen latere iteraties van de taakuitvoering bijgewerkte waarde.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); } }
De app lokaal bouwen en uitvoeren
Voer de volgende opdracht uit om de app te bouwen:
dotnet build
Nadat het bouwen is voltooid, voert u de volgende opdracht uit om de app lokaal uit te voeren:
dotnet run
U ziet nu de volgende uitvoer in de console.
Meld u aan bij het Azure-portaal. Selecteer Alle resources en selecteer het App Configuration-archief dat u eerder hebt gemaakt.
Selecteer Functiebeheer en zoek de bètafunctievlag. Schakel de vlag in door het selectievakje onder Ingeschakeld in te schakelen.
Wacht even totdat het tijdvenster voor het vernieuwingsinterval is verstreken. U ziet het bijgewerkte logboekbericht.
Resources opschonen
Als u de resources die in dit artikel zijn gemaakt niet wilt blijven gebruiken, verwijdert u de resourcegroep die u hier hebt gemaakt om kosten te voorkomen.
Belangrijk
Het verwijderen van een resourcegroep kan niet ongedaan worden gemaakt. De resourcegroep en alle resources daarin worden permanent verwijderd. Zorg ervoor dat u niet per ongeluk de verkeerde resourcegroep of resources verwijdert. Als u de resources voor dit artikel in een resourcegroep hebt gemaakt die andere resources bevat die u wilt behouden, moet u elke resource afzonderlijk verwijderen uit het deelvenster in plaats van dat u de resourcegroep verwijdert.
- Meld u aan bij de Azure-portal en selecteer Resourcegroepen.
- Voer de naam van de resourcegroep in het vak Filteren op naam in.
- Selecteer in de resultatenlijst de resourcegroepnaam om een overzicht te bekijken.
- Selecteer Resourcegroep verwijderen.
- U wordt gevraagd om het verwijderen van de resourcegroep te bevestigen. Voer de naam van de resourcegroep in ter bevestiging en selecteer Verwijderen.
Na enkele ogenblikken worden de resourcegroep en alle bijbehorende resources verwijderd.
Volgende stappen
In deze quickstart hebt u een functievlag gemaakt en deze gebruikt met een achtergrondservice.
Als u functiebeheermogelijkheden voor andere typen apps wilt inschakelen, gaat u verder met de volgende zelfstudies.
Ga verder met de volgende zelfstudie voor meer informatie over het beheren van functievlagmen in Azure-app Configuratie.
Ga verder naar het volgende document voor de volledige functierundown van de .NET-functiebeheerbibliotheek.