Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym przewodniku Szybki start włączysz funkcję zarządzania funkcjami z usługi Azure App Configuration do usługi działającej 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 bazuje na aplikacji usługi w tle platformy .NET przedstawionej 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 sklepu przy użyciu portalu Azure lub interfejsu CLI, zobacz Tworzenie flagi funkcji.
Używanie flagi funkcji
Dodaj odwołania do
Microsoft.FeatureManagementpakietu NuGet, uruchamiając następujące polecenie:dotnet add package Microsoft.FeatureManagementUruchom następujące polecenie, aby przywrócić pakiety dla projektu:
dotnet restoreOtwórz Program.cs i dodaj następującą instrukcję:
using Microsoft.FeatureManagement;Dodaj wywołanie metody
UseFeatureFlagswewnątrz wywołaniaAddAzureAppConfigurationi 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 // ... ...Wskazówka
Jeśli do metody
UseFeatureFlagsnie zostanie przekazany żaden parametr, metoda ładuje wszystkie flagi funkcjonalności bez przypisanej etykiety z magazynu 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 te flagi funkcji, których nazwa klucza zaczyna się od TestApp: i które mają etykietę dev. Kod zmienia również czas interwału odświeżania na 5 minut. Należy pamiętać, że ten interwał odświeżania jest niezależny od interwału dla zwykłych par 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 usługi
Worker, aby uzyskiwać instancjeIConfigurationRefresheriIVariantFeatureManagerza pomocą wstrzykiwania zależności.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)); } // ... ... }Zaktualizuj metodę
ExecuteAsync, aby rejestrowała komunikat w zależności od stanu flagi funkcjonalności.Metoda
TryRefreshAsyncjest wywoływana na początku każdej iteracji wykonania zadania w celu odświeżenia flagi funkcji. Jeśli nie zostanie osiągnięte okno czasowe interwału odświeżania, nie zostanie wykonana żadna operacja. Operatorawaitnie jest używany, aby flagi funkcji były odświeżane bez blokowania bieżącej iteracji wykonania zadania. W takim przypadku późniejsze iteracje wykonywania zadania otrzymają zaktualizowaną wartość.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 buildPo pomyślnym zakończeniu kompilacji uruchom następujące polecenie, aby uruchomić aplikację lokalnie:
dotnet runW konsoli powinny zostać wyświetlone następujące dane wyjściowe.
Zaloguj się w witrynie Azure Portal. Wybierz Wszystkie zasoby i wybierz magazyn App Configuration, który został wcześniej utworzony.
Wybierz pozycję Menedżer funkcji i znajdź flagę funkcji beta . Włącz flagę, zaznaczając pole wyboru w obszarze Włączone.
Odczekaj kilka chwil, aż upłynie interwał 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 przez przypadek niewłaściwej 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.
- Zostaniesz poproszony 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 w usłudze działającej 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 o zarządzaniu flagami funkcji w usłudze Azure App Configuration, przejdź do poniższego samouczka.
Aby uruchomić pełną funkcję biblioteki zarządzania funkcjami platformy .NET, przejdź do następującego dokumentu.