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.
Özellik bayrağını kullanma
Aşağıdaki komutu çalıştırarak NuGet paketine başvurular
Microsoft.FeatureManagement
ekleyin:dotnet add package Microsoft.FeatureManagement
Projenizin paketlerini geri yüklemek için aşağıdaki komutu çalıştırın:
dotnet restore
Program.cs açın ve aşağıdaki deyimi ekleyin:
using Microsoft.FeatureManagement;
Çağrısının
UseFeatureFlags
içineAddAzureAppConfiguration
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ığıylaFeatureFlagOptions
ö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); });
Worker.cs açın ve aşağıdaki deyimi ekleyin:
using Microsoft.FeatureManagement;
Bağımlılık ekleme yoluyla ve
IFeatureManager
örneklerini almak için hizmetin oluşturucusunuWorker
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)); } // ... ... }
Ö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
Uygulamayı derlemek için aşağıdaki komutu çalıştırın:
dotnet build
Derleme başarıyla tamamlandıktan sonra aşağıdaki komutu çalıştırarak uygulamayı yerel olarak çalıştırın:
dotnet run
Konsolda aşağıdaki çıkışları görmeniz gerekir.
Azure Portal’ında oturum açın. Tüm kaynaklar'ı seçin ve daha önce oluşturduğunuz Uygulama Yapılandırması depoyu seçin.
Özellik yöneticisi'ni seçin ve Beta özellik bayrağını bulun. Etkin altındaki onay kutusunu seçerek bayrağı etkinleştirin.
Yenileme aralığı zaman penceresinin geçmesi için birkaç dakika bekleyin. Güncelleştirilmiş günlük iletisini görürsünüz.
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.
- Azure portalında oturum açın ve Kaynak grupları'nı seçin.
- Ada göre filtrele kutusuna kaynak grubunuzun adını girin.
- Genel bir bakış görmek için sonuç listesinde kaynak grubu adını seçin.
- Kaynak grubunu sil'i seçin.
- 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.