Szybki start: dodawanie flag funkcji do usługi w tle platformy .NET
W tym przewodniku Szybki start uwzględnisz funkcję zarządzania funkcjami z aplikacja systemu Azure Configuration w usłudze w tle platformy .NET. Usługa App Configuration służy do centralnego przechowywania flag funkcji i zarządzania nimi.
Wymagania wstępne
Obsługa zarządzania funkcjami rozszerza funkcję konfiguracji dynamicznej w usłudze App Configuration. Przykład w tym przewodniku Szybki start jest oparty na aplikacji usługi w tle platformy .NET wprowadzonej w samouczku dotyczącym konfiguracji dynamicznej. Przed kontynuowaniem ukończ poniższy samouczek, aby najpierw utworzyć aplikację usługi w tle platformy .NET z konfiguracją dynamiczną.
Dodawanie flagi funkcji
Dodaj flagę funkcji o nazwie Beta do sklepu App Configuration i pozostaw pole Etykieta i Opis z ich wartościami domyślnymi. Aby uzyskać więcej informacji na temat dodawania flag funkcji do magazynu przy użyciu witryny Azure Portal lub interfejsu wiersza polecenia, przejdź do tematu Tworzenie flagi funkcji.
Używanie flagi funkcji
Dodaj odwołania do
Microsoft.FeatureManagement
pakietu NuGet, uruchamiając następujące polecenie:dotnet add package Microsoft.FeatureManagement
Uruchom następujące polecenie, aby przywrócić pakiety dla projektu:
dotnet restore
Otwórz Program.cs i dodaj następującą instrukcję:
using Microsoft.FeatureManagement;
Dodaj wywołanie metody
UseFeatureFlags
wewnątrz wywołaniaAddAzureAppConfiguration
i zarejestruj usługi zarządzania funkcjami.// 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 // ... ...
Napiwek
Jeśli żaden parametr nie zostanie przekazany do
UseFeatureFlags
metody, ładuje wszystkie flagi funkcji bez etykiety w magazynie usługi App Configuration. Domyślny interwał odświeżania flag funkcji to 30 sekund. To zachowanie można dostosować za pomocą parametruFeatureFlagOptions
. Na przykład poniższy fragment kodu ładuje tylko flagi funkcji rozpoczynające się od aplikacji TestApp: w nazwie klucza i mają etykietę dev. Kod zmienia również czas interwału odświeżania na 5 minut. Należy pamiętać, że ten czas interwału odświeżania jest oddzielony od tego dla zwykłych wartości klucz-wartość.options.UseFeatureFlags(featureFlagOptions => { featureFlagOptions.Select("TestApp:*", "dev"); featureFlagOptions.CacheExpirationInterval = TimeSpan.FromMinutes(5); });
Otwórz Worker.cs i dodaj następującą instrukcję:
using Microsoft.FeatureManagement;
Zaktualizuj konstruktor
Worker
usługi, aby uzyskać wystąpienia iIConfigurationRefresher
IFeatureManager
za pomocą iniekcji zależności.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)); } // ... ... }
Zaktualizuj metodę w
ExecuteAsync
celu zarejestrowania komunikatu w zależności od stanu flagi funkcji.Metoda
TryRefreshAsync
jest wywoływana na początku każdej iteracji wykonania zadania w celu odświeżenia flagi funkcji. Jeśli przedział czasu interwału odświeżania nie zostanie osiągnięty, będzie to operacja bez operacji. Operatorawait
nie jest używany, aby flagi funkcji były odświeżane bez blokowania bieżącej iteracji wykonania zadania. W takim przypadku późniejsze iteracji wykonania zadania zostaną zaktualizowane.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); } }
Lokalne kompilowanie i uruchamianie aplikacji
Uruchom następujące polecenie, aby skompilować aplikację:
dotnet build
Po pomyślnym zakończeniu kompilacji uruchom następujące polecenie, aby uruchomić aplikację lokalnie:
dotnet run
W konsoli powinny zostać wyświetlone następujące dane wyjściowe.
Zaloguj się w witrynie Azure Portal. Wybierz pozycję Wszystkie zasoby i wybierz utworzony wcześniej magazyn App Configuration.
Wybierz pozycję Menedżer funkcji i znajdź flagę funkcji beta . Włącz flagę, zaznaczając pole wyboru w obszarze Włączone.
Poczekaj chwilę na przekazanie przedziału czasu interwału odświeżania. Zostanie wyświetlony zaktualizowany komunikat dziennika.
Czyszczenie zasobów
Jeśli nie chcesz nadal korzystać z zasobów utworzonych w tym artykule, usuń utworzoną tutaj grupę zasobów, aby uniknąć naliczania opłat.
Ważne
Usunięcie grupy zasobów jest nieodwracalne. Grupa zasobów i wszystkie zasoby w niej są trwale usuwane. Upewnij się, że nie usuniesz przypadkowo nieprawidłowej grupy zasobów ani zasobów. Jeśli zasoby dla tego artykułu zostały utworzone w grupie zasobów zawierającej inne zasoby, które chcesz zachować, usuń każdy zasób oddzielnie z odpowiedniego okienka zamiast usuwać grupę zasobów.
- Zaloguj się do witryny Azure Portal i wybierz pozycję Grupy zasobów.
- W polu Filtruj według nazwy wprowadź nazwę grupy zasobów.
- Na liście wyników wybierz nazwę grupy zasobów, aby wyświetlić przegląd.
- Wybierz pozycję Usuń grupę zasobów.
- Zobaczysz prośbę o potwierdzenie usunięcia grupy zasobów. Wprowadź nazwę grupy zasobów, aby potwierdzić, a następnie wybierz pozycję Usuń.
Po kilku chwilach grupa zasobów i wszystkie jej zasoby zostaną usunięte.
Następne kroki
W tym przewodniku Szybki start utworzono flagę funkcji i użyto jej z usługą w tle.
Aby włączyć funkcję zarządzania funkcjami dla innych typów aplikacji, przejdź do następujących samouczków.
Aby dowiedzieć się więcej na temat zarządzania flagami funkcji w usłudze aplikacja systemu Azure Configuration, przejdź do następującego samouczka.
Aby uruchomić pełną funkcję biblioteki zarządzania funkcjami platformy .NET, przejdź do następującego dokumentu.