Bagikan melalui


Mulai cepat: Menambahkan bendera fitur ke layanan latar belakang .NET

Dalam mulai cepat ini, Anda menggabungkan kemampuan manajemen fitur dari Azure App Configuration ke dalam layanan latar belakang .NET. Anda menggunakan App Configuration untuk menyimpan dan mengelola bendera fitur Anda secara terpusat.

Prasyarat

Dukungan manajemen fitur memperluas fitur konfigurasi dinamis di App Configuration. Contoh dalam mulai cepat ini dibangun pada aplikasi layanan latar belakang .NET yang diperkenalkan dalam tutorial konfigurasi dinamis. Sebelum melanjutkan, selesaikan tutorial berikut untuk membuat aplikasi layanan latar belakang .NET dengan konfigurasi dinamis terlebih dahulu.

Menambahkan bendera fitur

Tambahkan bendera fitur yang disebut Beta ke penyimpanan App Configuration dan biarkan Label dan Deskripsi dengan nilai defaultnya. Untuk informasi selengkapnya tentang cara menambahkan bendera fitur ke penyimpanan menggunakan portal Azure atau CLI, buka Membuat bendera fitur.

Cuplikan layar memperlihatkan bidang untuk mengaktifkan bendera fitur bernama Beta.

Menggunakan bendera fitur

  1. Tambahkan referensi ke Microsoft.FeatureManagement paket NuGet dengan menjalankan perintah berikut:

    dotnet add package Microsoft.FeatureManagement
    
  2. Jalankan perintah berikut untuk memulihkan paket untuk proyek Anda:

    dotnet restore
    
  3. Buka Program.cs dan tambahkan pernyataan berikut:

    using Microsoft.FeatureManagement;
    
  4. Tambahkan panggilan ke metode di UseFeatureFlags dalam AddAzureAppConfiguration layanan manajemen fitur panggilan dan daftarkan.

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

    Ketika tidak ada parameter yang diteruskan ke metode , parameter memuat UseFeatureFlags semua bendera fitur tanpa label di penyimpanan App Configuration Anda. Interval refresh default bendera fitur adalah 30 detik. Anda dapat menyesuaikan perilaku ini melalui FeatureFlagOptions parameter . Misalnya, cuplikan kode berikut hanya memuat bendera fitur yang dimulai dengan TestApp: dalam nama kuncinya dan memiliki dev label. Kode juga mengubah waktu interval refresh menjadi 5 menit. Perhatikan bahwa waktu interval refresh ini terpisah dari itu untuk nilai kunci reguler.

    options.UseFeatureFlags(featureFlagOptions =>
    {
        featureFlagOptions.Select("TestApp:*", "dev");
        featureFlagOptions.CacheExpirationInterval = TimeSpan.FromMinutes(5);
    });
    
  5. Buka Worker.cs dan tambahkan pernyataan berikut:

    using Microsoft.FeatureManagement;
    
  6. Perbarui konstruktor Worker layanan untuk mendapatkan instans IConfigurationRefresher dan IVariantFeatureManager melalui injeksi dependensi.

    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));
        }
    
        // ... ...
    }
    
  7. ExecuteAsync Perbarui metode untuk mencatat pesan tergantung pada status bendera fitur.

    Metode TryRefreshAsync ini dipanggil di awal setiap iterasi eksekusi tugas untuk me-refresh bendera fitur. Ini akan menjadi no-op jika jendela waktu interval refresh tidak tercapai. Operator await tidak digunakan sehingga bendera fitur disegarkan tanpa memblokir iterasi eksekusi tugas saat ini. Dalam hal ini, perulangan eksekusi tugas nanti akan mendapatkan nilai yang diperbarui.

    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);
        }
    }
    

Membangun dan menjalankan aplikasi secara lokal

  1. Jalankan perintah berikut untuk membuat gambar:

    dotnet build
    
  2. Setelah pembangunan berhasil diselesaikan, jalankan perintah berikut untuk menjalankan aplikasi secara lokal:

    dotnet run
    
  3. Anda akan melihat output berikut di konsol.

    Cuplikan layar konsol dengan layanan latar belakang yang berjalan dengan bendera fitur dinonaktifkan.

  4. Masuk ke portal Azure. Pilih Semua sumber daya, dan pilih penyimpanan App Configuration yang Anda buat sebelumnya.

  5. Pilih Pengelola fitur dan temukan bendera fitur Beta . Aktifkan bendera dengan memilih kotak centang di bawah Diaktifkan.

  6. Tunggu beberapa saat agar jendela waktu interval refresh berlalu. Anda akan melihat pesan log yang diperbarui.

    Cuplikan layar konsol dengan layanan latar belakang yang berjalan dengan bendera fitur diaktifkan.

Membersihkan sumber daya

Jika Anda tidak ingin terus menggunakan sumber daya yang dibuat dalam artikel ini, hapus grup sumber daya yang Anda buat di sini untuk menghindari biaya.

Penting

Penghapusan grup sumber daya tidak bisa dipulihkan. Grup sumber daya dan semua sumber daya yang ada di dalamnya akan dihapus secara permanen. Pastikan Anda tidak menghapus grup atau sumber daya yang salah secara tidak sengaja. Jika Anda membuat sumber daya untuk artikel ini dalam grup sumber daya yang ada yang berisi sumber daya lain yang ingin disimpan, hapus setiap sumber daya satu per satu dari panelnya masing-masing, bukan menghapus grup sumber daya.

  1. Masuk ke portal Azure, lalu pilih Grup sumber daya.
  2. Dalam kotak Filter menurut nama, masukkan nama grup sumber daya Anda.
  3. Dalam daftar hasil, pilih nama grup sumber daya untuk melihat gambaran umum.
  4. Pilih Hapus grup sumber daya.
  5. Anda akan diminta untuk mengonfirmasi penghapusan grup sumber daya. Masukkan nama grup sumber daya Anda untuk mengonfirmasi, dan pilih Hapus.

Setelah beberapa saat, grup sumber daya dan semua sumber dayanya akan dihapus.

Langkah berikutnya

Dalam mulai cepat ini, Anda membuat bendera fitur dan menggunakannya dengan layanan latar belakang.

Untuk mengaktifkan kemampuan manajemen fitur untuk jenis aplikasi lain, lanjutkan ke tutorial berikut.

Untuk mempelajari selengkapnya tentang mengelola bendera fitur di Azure App Configuration, lanjutkan ke tutorial berikut.

Untuk rundown fitur lengkap pustaka manajemen fitur .NET, lanjutkan ke dokumen berikut.