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.
Kolay gelsin.
Yorum bırak
Yanıtla
Yanıtlamayı iptal et