Snabbstart: Lägga till funktionsflaggor i en .NET-bakgrundstjänst
I den här snabbstarten införlivar du funktionen för funktionshantering från Azure App Configuration i en .NET-bakgrundstjänst. Du använder App Configuration för att lagra och hantera dina funktionsflaggor centralt.
Förutsättningar
Stöd för funktionshantering utökar funktionen för dynamisk konfiguration i App Configuration. Exemplet i den här snabbstarten bygger på .NET-bakgrundstjänstappen som introducerades i självstudien för dynamisk konfiguration. Innan du fortsätter slutför du följande självstudie för att skapa en .NET-bakgrundstjänstapp med dynamisk konfiguration först.
Lägga till en funktionsflagga
Lägg till en funktionsflagga med namnet Beta i App Configuration Store och lämna Etikett och Beskrivning med sina standardvärden. Mer information om hur du lägger till funktionsflaggor i en butik med hjälp av Azure Portal eller CLI finns i Skapa en funktionsflagga.
Använda funktionsflaggan
Lägg till referenser till
Microsoft.FeatureManagement
NuGet-paketet genom att köra följande kommando:dotnet add package Microsoft.FeatureManagement
Kör följande kommando för att återställa paket för projektet:
dotnet restore
Öppna Program.cs och lägg till följande instruktion:
using Microsoft.FeatureManagement;
Lägg till ett anrop till
UseFeatureFlags
metoden i anropetAddAzureAppConfiguration
och registrera funktionshanteringstjänster.// 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 // ... ...
Dricks
När ingen parameter skickas till
UseFeatureFlags
metoden läses alla funktionsflaggor in utan etikett i appkonfigurationsarkivet. Standarduppdateringsintervallet för funktionsflaggor är 30 sekunder. Du kan anpassa det här beteendet via parameternFeatureFlagOptions
. Följande kodfragment läser till exempel bara in funktionsflaggor som börjar med TestApp: i deras nyckelnamn och har etiketten dev. Koden ändrar även uppdateringsintervalltiden till 5 minuter. Observera att den här uppdateringsintervalltiden är separat från den för vanliga nyckelvärden.options.UseFeatureFlags(featureFlagOptions => { featureFlagOptions.Select("TestApp:*", "dev"); featureFlagOptions.CacheExpirationInterval = TimeSpan.FromMinutes(5); });
Öppna Worker.cs och lägg till följande instruktion:
using Microsoft.FeatureManagement;
Uppdatera konstruktorn för
Worker
tjänsten för att hämta instanser avIConfigurationRefresher
ochIVariantFeatureManager
via beroendeinmatning.public class Worker : BackgroundService { private readonly ILogger<Worker> _logger; private readonly IConfigurationRefresher _refresher; private readonly IVariantFeatureManager _featureManager; public Worker(ILogger<Worker> logger, IConfigurationRefresher refresher, IVariantFeatureManager featureManager) { _logger = logger ?? throw new ArgumentNullException(nameof(logger)); _refresher = refresher ?? throw new ArgumentNullException(nameof(refresher)); _featureManager = featureManager ?? throw new ArgumentNullException(nameof(featureManager)); } // ... ... }
ExecuteAsync
Uppdatera metoden för att logga ett meddelande beroende på funktionsflaggans tillstånd.Metoden
TryRefreshAsync
anropas i början av varje iteration av aktivitetskörningen för att uppdatera funktionsflaggan. Det blir en no-op om tidsperioden för uppdateringsintervallet inte nås. Operatornawait
används inte så att funktionsflaggor uppdateras utan att den aktuella iterationen av aktivitetskörningen blockeras. I så fall kommer senare iterationer av aktivitetskörningen att få ett uppdaterat värde.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); } }
Skapa och köra appen lokalt
Skapa appen genom att köra följande kommando:
dotnet build
När bygget har slutförts kör du följande kommando för att köra appen lokalt:
dotnet run
Du bör se följande utdata i konsolen.
Logga in på Azure-portalen. Välj Alla resurser och välj appkonfigurationsarkivet som du skapade tidigare.
Välj Funktionshanterare och leta upp flaggan Beta-funktion . Aktivera flaggan genom att markera kryssrutan under Aktiverad.
Vänta en stund tills tidsperioden för uppdateringsintervallet har passerat. Du ser det uppdaterade loggmeddelandet.
Rensa resurser
Om du inte vill fortsätta använda resurserna som skapas i den här artikeln tar du bort resursgruppen som du skapade här för att undvika avgifter.
Viktigt!
Att ta bort en resursgrupp kan inte ångras. Resursgruppen och alla resurser i den tas bort permanent. Se till att du inte oavsiktligt tar bort fel resursgrupp eller resurser. Om du har skapat resurserna för den här artikeln i en resursgrupp som innehåller andra resurser som du vill behålla tar du bort varje resurs individuellt från respektive fönster i stället för att ta bort resursgruppen.
- Logga in på Azure Portal och välj Resursgrupper.
- I rutan Filtrera efter namn anger du namnet på resursgruppen.
- I resultatlistan väljer du resursgruppens namn för att se en översikt.
- Välj Ta bort resursgrupp.
- Du blir ombedd att bekräfta borttagningen av resursgruppen. Ange namnet på resursgruppen för att bekräfta och välj Ta bort.
Efter en liten stund tas resursgruppen och alla dess resurser bort.
Nästa steg
I den här snabbstarten skapade du en funktionsflagga och använde den med en bakgrundstjänst.
Om du vill aktivera funktioner för funktionshantering för andra typer av appar fortsätter du till följande självstudier.
Om du vill veta mer om hur du hanterar funktionsflaggor i Azure App Configuration fortsätter du till följande självstudie.
Fortsätt till följande dokument för den fullständiga funktionskörningen i .NET-funktionshanteringsbiblioteket.