ASP.NET Core Feature Management

26.03.2022 | dakika okuma

Feature Management, .NET Core uygulamalarında özellik yönetimi sağlar. Uygulamaya ait özelliklerin aktiflik/pasiflik durumunun yönetilmesine ve sorgulanmasına imkan verir. Örneğin yeni geliştirdiğiniz bir özelliğin belirli tarih aralığında aktif olmasını sağlayabilirsiniz. Başka bir örnek vermek gerekirse geliştirdiğiniz bir özelliğin belirli yüzdelik oranla aktif olmasını sağlayabilirsiniz. A/B testi gibi.

Uygulama yaparak test edelim. İlk olarak aşağıdaki paketi kurmamız gerekli.

    dotnet add package Microsoft.FeatureManagement.AspNetCore -version 2.0.0

Özelliklerimizi enum'da tanımlayalım.

Feature Management'i aktif etmek için Startup'da gerekli olan kayıt işlemini yapalım.

Feature Management, özellikleri IConfiguration'dan okuduğu için özellikleri environment variable, commandline argument veya appsettings'de tanımlayabiliriz. Ya da custom provider'ınız varsa ilgili kaynakta da özelliklerinizi tanımlayabilirsiniz. Biz örneğimizde appsettings'i kullanacağız. FeatureA isimli özelliğin tanımlamasını yapalım.

Özelliklerin aktifliğini sorgulamak için "IFeatureManager" interface'ini inject etmeliyiz. Bu interface'in "IsEnabledAsync" metodunu kullanarak aşağıdaki gibi FeatureA özelliğinin aktifliğini sorgulayabiliriz.

TimeWindowFilter

Özelliğin belirli tarih aralığında aktif olmasını istiyorsak dahili "TimeWindowFilter" filter'ını kullanabiliriz. Bunun için Startup'da bu filter'ı aktif etmeliyiz.

appsettings'de FeatureB isimli özelliğin tanımlamasını yapalım.

Tarih formatı olarak UTCDate kullanılıyor. Sadece Start parametresini verirseniz, bu tarihten itibaren özellik aktif olacaktır. Sadece End parametresini verirseniz bu tarihe kadar özellik aktif olacaktır.

Yine "IFeatureManager" interface'inin "IsEnabledAsync" metodunu kullanarak aşağıdaki gibi FeatureB özelliğinin aktifliğini sorgulayabiliriz.

PercentageFilter

Özelliğin belirli yüzdelik oranla aktif olmasını istiyorsak dahili "PercentageFilter" filter'ını kullanabiliriz. Bunun için Startup'da bu filter'ı aktif etmeliyiz.

appsettings'de FeatureC isimli özelliğin tanımlamasını yapalım.

İsteklerin %80'inde bu özellik aktif olacaktır.

Yine "IFeatureManager" interface'inin "IsEnabledAsync" metodunu kullanarak aşağıdaki gibi FeatureC özelliğinin aktifliğini sorgulayabiliriz.

Custom Filter

Bu filter'ların dışında kendi filter'larınızı da yazabilirsiniz. Örneğin özelliğin bir mobil cihazda aktif olması için aşağıdaki gibi bir filter yazılabilir.

appsettings'de FeatureD isimli özelliğin tanımlamasını yapalım.

Filter parametrelerine erişmek için "MobileFilterSettings" class'ı oluşturalım.

"MobileFilter" adında özel filter'ımızı aşağıdaki gibi yazalım.

Startup'da bu filter'ı aktif etmeliyiz.

Yine "IFeatureManager" interface'inin "IsEnabledAsync" metodunu kullanarak aşağıdaki gibi FeatureD özelliğinin aktifliğini sorgulayabiliriz.

Mvc Action Filter Attribute

IFeatureManager interface'ini kullanmak yerine ActionFilter sayesinde attribute bazlı Controller'ın veya Action'ın aktifliğini ayarlayabilirsiniz.

Razor Tag Helper

Özelliğin aktiflik durumuna göre View'de içerik görüntülemek istiyorsanız feature razor tag'ini kullanabilirsiniz.

Middleware

Özelliğin aktiflik durumuna göre middleware eklemek istiyorsanız UseMiddlewareForFeature metodunu kullanabilirsiniz.

Örnek uygulamaya Github'dan erişebilirsiniz.

ahmetkucukoglu/aspnetcore-feature-management

ASP.NET Core Feature Management

C#
2
1

Kolay gelsin.

Yazıyı Paylaş

Yorum bırak

Yanıtla

Yanıtlamayı iptal et
Bu site reCAPTCHA tarafından korunmaktadır ve Google Gizlilik Politikası ve Hizmet Şartları geçerlidir. Yorumunuz başarılı şekilde gönderildi reCaptcha doğrulanamadı
Muhabbetle ASP.NET Core ile geliştirildi.