Udostępnij za pośrednictwem


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.

Zrzut ekranu przedstawiający pola umożliwiające włączenie flagi funkcji o nazwie Beta.

Używanie flagi funkcji

  1. Dodaj odwołania do Microsoft.FeatureManagement pakietu NuGet, uruchamiając następujące polecenie:

    dotnet add package Microsoft.FeatureManagement
    
  2. Uruchom następujące polecenie, aby przywrócić pakiety dla projektu:

    dotnet restore
    
  3. Otwórz Program.cs i dodaj następującą instrukcję:

    using Microsoft.FeatureManagement;
    
  4. Dodaj wywołanie metody UseFeatureFlags wewnątrz wywołania AddAzureAppConfiguration i zarejestruj usługi zarządzania funkcjami.

    // 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
    // ... ...
    

    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ą parametru FeatureFlagOptions . 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);
    });
    
  5. Otwórz Worker.cs i dodaj następującą instrukcję:

    using Microsoft.FeatureManagement;
    
  6. Zaktualizuj konstruktor Worker usługi, aby uzyskać wystąpienia i IConfigurationRefresher 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));
        }
    
        // ... ...
    }
    
  7. 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. Operator await 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

  1. Uruchom następujące polecenie, aby skompilować aplikację:

    dotnet build
    
  2. Po pomyślnym zakończeniu kompilacji uruchom następujące polecenie, aby uruchomić aplikację lokalnie:

    dotnet run
    
  3. W konsoli powinny zostać wyświetlone następujące dane wyjściowe.

    Zrzut ekranu konsoli z uruchomioną usługą w tle z wyłączoną flagą funkcji.

  4. Zaloguj się w witrynie Azure Portal. Wybierz pozycję Wszystkie zasoby i wybierz utworzony wcześniej magazyn App Configuration.

  5. Wybierz pozycję Menedżer funkcji i znajdź flagę funkcji beta . Włącz flagę, zaznaczając pole wyboru w obszarze Włączone.

  6. Poczekaj chwilę na przekazanie przedziału czasu interwału odświeżania. Zostanie wyświetlony zaktualizowany komunikat dziennika.

    Zrzut ekranu konsoli z uruchomioną usługą w tle z włączoną flagą funkcji.

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.

  1. Zaloguj się do witryny Azure Portal i wybierz pozycję Grupy zasobów.
  2. W polu Filtruj według nazwy wprowadź nazwę grupy zasobów.
  3. Na liście wyników wybierz nazwę grupy zasobów, aby wyświetlić przegląd.
  4. Wybierz pozycję Usuń grupę zasobów.
  5. 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.