Hızlı Başlangıç: .NET arka plan hizmetine özellik bayrakları ekleme

Bu hızlı başlangıçta, Azure Uygulaması Yapılandırması'ndaki özellik yönetimi özelliğini bir .NET arka plan hizmetine dahil edersiniz. özellik bayraklarınızı merkezi olarak depolamak ve yönetmek için Uygulama Yapılandırması kullanırsınız.

Önkoşullar

Özellik yönetimi desteği, Uygulama Yapılandırması dinamik yapılandırma özelliğini genişletir. Bu hızlı başlangıçtaki örnek, dinamik yapılandırma öğreticisinde sunulan .NET arka plan hizmeti uygulamasını temel alır. Devam etmeden önce, önce dinamik yapılandırmaya sahip bir .NET arka plan hizmeti uygulaması oluşturmak için aşağıdaki öğreticiyi tamamlayın.

Özellik bayrağı ekleme

Uygulama Yapılandırması deposuna Beta adlı bir özellik bayrağı ekleyin ve Etiket ve Açıklama değerlerini varsayılan değerleriyle bırakın. Azure portalını veya CLI'yı kullanarak bir depoya özellik bayrakları ekleme hakkında daha fazla bilgi için Özellik bayrağı oluşturma bölümüne gidin.

Beta adlı bir özellik bayrağını etkinleştirme alanlarını gösteren ekran görüntüsü.

Özellik bayrağını kullanma

  1. Aşağıdaki komutu çalıştırarak NuGet paketine başvurular Microsoft.FeatureManagement ekleyin:

    dotnet add package Microsoft.FeatureManagement
    
  2. Projenizin paketlerini geri yüklemek için aşağıdaki komutu çalıştırın:

    dotnet restore
    
  3. Program.cs açın ve aşağıdaki deyimi ekleyin:

    using Microsoft.FeatureManagement;
    
  4. Çağrısının UseFeatureFlags içine AddAzureAppConfiguration yöntemine bir çağrı ekleyin ve özellik yönetimi hizmetlerini kaydedin.

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

    İpucu

    yöntemine UseFeatureFlags parametre geçirilmediğinde, Uygulama Yapılandırması deponuzda etiket içermeyen tüm özellik bayraklarını yükler. Özellik bayraklarının varsayılan yenileme aralığı 30 saniyedir. Bu davranışı parametresi aracılığıyla FeatureFlagOptions özelleştirebilirsiniz. Örneğin, aşağıdaki kod parçacığı yalnızca TestApp ile başlayan özellik bayraklarını yükler: anahtar adlarında ve etiket geliştirmesine sahiptir. Kod ayrıca yenileme aralığı süresini 5 dakika olarak değiştirir. Bu yenileme aralığı süresinin normal anahtar-değerler için bu süreden ayrı olduğunu unutmayın.

    options.UseFeatureFlags(featureFlagOptions =>
    {
        featureFlagOptions.Select("TestApp:*", "dev");
        featureFlagOptions.CacheExpirationInterval = TimeSpan.FromMinutes(5);
    });
    
  5. Worker.cs açın ve aşağıdaki deyimi ekleyin:

    using Microsoft.FeatureManagement;
    
  6. Bağımlılık ekleme yoluyla ve IFeatureManager örneklerini almak için hizmetin oluşturucusunu Worker IConfigurationRefresher güncelleştirin.

    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. Özellik bayrağının ExecuteAsync durumuna bağlı olarak bir iletiyi günlüğe kaydetmek için yöntemini güncelleştirin.

    TryRefreshAsync Yöntem, özellik bayrağını yenilemek için görev yürütmesinin her yinelemesinin başında çağrılır. Yenileme aralığı zaman penceresine ulaşılmadıysa işlem yapılmaz. await İşleç, görev yürütmenin geçerli yinelemesini engellemeden özellik bayraklarının yenilenmesi için kullanılmaz. Bu durumda, görev yürütmenin daha sonraki yinelemeleri güncelleştirilmiş değer alır.

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

Uygulamayı yerel olarak derleme ve çalıştırma

  1. Uygulamayı derlemek için aşağıdaki komutu çalıştırın:

    dotnet build
    
  2. Derleme başarıyla tamamlandıktan sonra aşağıdaki komutu çalıştırarak uygulamayı yerel olarak çalıştırın:

    dotnet run
    
  3. Konsolda aşağıdaki çıkışları görmeniz gerekir.

    Özellik bayrağı devre dışı bırakılmış arka plan hizmetinin çalıştığı konsolun ekran görüntüsü.

  4. Azure Portal’ında oturum açın. Tüm kaynaklar'ı seçin ve daha önce oluşturduğunuz Uygulama Yapılandırması depoyu seçin.

  5. Özellik yöneticisi'ni seçin ve Beta özellik bayrağını bulun. Etkin altındaki onay kutusunu seçerek bayrağı etkinleştirin.

  6. Yenileme aralığı zaman penceresinin geçmesi için birkaç dakika bekleyin. Güncelleştirilmiş günlük iletisini görürsünüz.

    Özellik bayrağı etkinken arka plan hizmetinin çalıştığı konsolun ekran görüntüsü.

Kaynakları temizleme

Bu makalede oluşturulan kaynakları kullanmaya devam etmek istemiyorsanız ücretlerden kaçınmak için burada oluşturduğunuz kaynak grubunu silin.

Önemli

Silinen kaynak grupları geri alınamaz. Kaynak grubu ve içindeki tüm kaynaklar kalıcı olarak silinir. Yanlış kaynak grubunu veya kaynakları yanlışlıkla silmediğinizden emin olun. Bu makalenin kaynaklarını, saklamak istediğiniz diğer kaynakları içeren bir kaynak grubu içinde oluşturduysanız, kaynak grubunu silmek yerine her kaynağı ilgili bölmeden tek tek silin.

  1. Azure portalında oturum açın ve Kaynak grupları'nı seçin.
  2. Ada göre filtrele kutusuna kaynak grubunuzun adını girin.
  3. Genel bir bakış görmek için sonuç listesinde kaynak grubu adını seçin.
  4. Kaynak grubunu sil'i seçin.
  5. Kaynak grubunun silinmesini onaylamanız istenir. Onaylamak için kaynak grubunuzun adını girin ve Sil'i seçin.

Birkaç dakika sonra kaynak grubu ve tüm kaynakları silinir.

Sonraki adımlar

Bu hızlı başlangıçta bir özellik bayrağı oluşturdunuz ve bunu bir arka plan hizmetiyle kullandınız.

Diğer uygulama türleri için özellik yönetimi özelliğini etkinleştirmek için aşağıdaki öğreticilere geçin.

Azure Uygulaması Yapılandırması'nda özellik bayraklarını yönetme hakkında daha fazla bilgi edinmek için aşağıdaki öğreticiye geçin.

.NET özellik yönetimi kitaplığının tam özellik çalıştırması için aşağıdaki belgeye geçin.