Hedeflenen izleyiciler için özelliklerin aşamalı dağıtımını etkinleştir

Özellik bayrakları, uygulamanızdaki işlevselliği dinamik olarak etkinleştirmenizi veya devre dışı bırakabilmeniz için izin verir. Özellik filtreleri her değerlendirildiğinde bir özellik bayrağının durumunu belirlenir. Microsoft.FeatureManagementKitaplık, TargetingFilter belirli bir Kullanıcı ve Grup listesi için veya belirtilen kullanıcı yüzdesi için özellik bayrağını sağlayan, öğesini içerir. TargetingFilter "yapışkan" dir. Bu, tek bir Kullanıcı bir özellik aldığında bu özelliği gelecekteki tüm isteklerde görmeye devam edebilecekleri anlamına gelir. TargetingFilterBir demo sırasında belirli bir hesap için bir özelliği etkinleştirmek, farklı gruplardaki veya "halkalar" ve çok daha fazlasına sahip kullanıcılara aşamalı olarak yeni özellikler almak için kullanabilirsiniz.

Bu makalede, TargetingFilter Azure Uygulama yapılandırması ile kullanarak bir ASP.NET Core Web uygulamasındaki yeni bir özelliği belirtilen kullanıcılara ve gruplara nasıl dağıtacağınızı öğreneceksiniz.

Özellik bayrakları ve kimlik doğrulaması ile bir Web uygulaması oluşturma

Kullanıcıları ve grupları temel alan özellikleri almak için kullanıcıların oturum açmasına izin veren bir Web uygulamasına ihtiyacınız vardır.

  1. Aşağıdaki komutu kullanarak yerel bir veritabanında kimlik doğrulayan bir Web uygulaması oluşturun:

    dotnet new mvc --auth Individual -o TestFeatureFlags
    
  2. Derleyin ve çalıştırın, sonra sağ üst köşedeki Kaydet bağlantısını seçerek yeni bir kullanıcı hesabı oluşturun. E-posta adresini kullanın test@contoso.com . Kayıt onayı ekranında, Hesabınızı onaylamak Için buraya tıklayın ' ı seçin.

  3. Yeni Web uygulamanıza Özellik bayrağı eklemek için hızlı başlangıç: ASP.NET Core uygulamasına özellik bayrakları ekleme ' deki yönergeleri izleyin.

  4. Uygulama yapılandırmasındaki Özellik bayrağını değiştirin. Bu eylemin, gezinti çubuğundaki Beta öğesinin görünürlüğünü denetlediğini doğrulayın.

Web uygulaması kodunu TargetingFilter kullanacak şekilde güncelleştirme

Bu noktada, Beta tüm kullanıcılar için özelliği etkinleştirmek veya devre dışı bırakmak üzere özellik bayrağını kullanabilirsiniz. Özellik bayrağını başkaları için devre dışı bırakırken bazı kullanıcılar için etkinleştirmek üzere kodunuzu kullanmak üzere güncelleştirin TargetingFilter . Bu örnekte, oturum açmış kullanıcının e-posta adresini Kullanıcı KIMLIĞI olarak ve e-posta adresinin etki alanı adı kısmını grup olarak kullanacaksınız. Kullanıcıyı ve grubunu öğesine ekleyeceksiniz TargetingContext . TargetingFilterHer istek için özellik bayrağının durumunu öğrenmek için bu bağlamı kullanır.

  1. Paketin en son sürümüne güncelleştirin Microsoft.FeatureManagement.AspNetCore .

    dotnet add package Microsoft.FeatureManagement.AspNetCore
    
  2. Testtargetingcontextaccessor. cs dosyası ekleyin:

    using Microsoft.AspNetCore.Http;
    using Microsoft.FeatureManagement.FeatureFilters;
    using System;
    using System.Collections.Generic;
    using System.Threading.Tasks;
    
    namespace TestFeatureFlags
    {
        public class TestTargetingContextAccessor : ITargetingContextAccessor
        {
            private const string TargetingContextLookup = "TestTargetingContextAccessor.TargetingContext";
            private readonly IHttpContextAccessor _httpContextAccessor;
    
            public TestTargetingContextAccessor(IHttpContextAccessor httpContextAccessor)
            {
                _httpContextAccessor = httpContextAccessor ?? throw new ArgumentNullException(nameof(httpContextAccessor));
            }
    
            public ValueTask<TargetingContext> GetContextAsync()
            {
                HttpContext httpContext = _httpContextAccessor.HttpContext;
                if (httpContext.Items.TryGetValue(TargetingContextLookup, out object value))
                {
                    return new ValueTask<TargetingContext>((TargetingContext)value);
                }
                List<string> groups = new List<string>();
                if (httpContext.User.Identity.Name != null)
                {
                    groups.Add(httpContext.User.Identity.Name.Split("@", StringSplitOptions.None)[1]);
                }
                TargetingContext targetingContext = new TargetingContext
                {
                    UserId = httpContext.User.Identity.Name,
                    Groups = groups
                };
                httpContext.Items[TargetingContextLookup] = targetingContext;
                return new ValueTask<TargetingContext>(targetingContext);
            }
        }
    }
    
  3. Startup. cs dosyasında, Microsoft. Featuremanagement. featurefilters ad alanına bir başvuru ekleyin:

    using Microsoft.FeatureManagement.FeatureFilters;
    
  4. Hizmetine yapılan çağrıyı izleyerek, kaydolmak üzere ConfigureServices yöntemini güncelleştirin TargetingFilter AddFeatureManagement() :

    services.AddFeatureManagement()
            .AddFeatureFilter<TargetingFilter>();
    
  5. Önceki adımda oluşturulan ' i hizmet koleksiyonuna eklemek için ConfigureServices yöntemini güncelleştirin TestTargetingContextAccessor . Targetingfilter , özellik bayrağı her değerlendirildiğinde hedefleme bağlamını belirlemede onu kullanır.

      services.AddSingleton<ITargetingContextAccessor, TestTargetingContextAccessor>();
    

Tüm ConfigureServices yöntemi şöyle görünür:

    public void ConfigureServices(IServiceCollection services)
    {
    services.AddDbContext<ApplicationDbContext>(options =>
        options.UseSqlite(
            Configuration.GetConnectionString("DefaultConnection")));
    services.AddDefaultIdentity<IdentityUser>(options => options.SignIn.RequireConfirmedAccount = true)
            .AddEntityFrameworkStores<ApplicationDbContext>();
    services.AddControllersWithViews();
    services.AddRazorPages();

    // Add feature management, targeting filter, and ITargetingContextAccessor to service collection
    services.AddFeatureManagement().AddFeatureFilter<TargetingFilter>();
    services.AddSingleton<ITargetingContextAccessor, TestTargetingContextAccessor>();
    }

Özellik bayrağını TargetingFilter kullanacak şekilde Güncelleştir

  1. Azure portal, uygulama yapılandırma deponuza gidin ve Feature Manager' ı seçin.

  2. Hızlı başlangıçta oluşturduğunuz Beta özelliği bayrağının bağlam menüsünü seçin. Düzenle'yi seçin.

    Beta Özellik bayrağını Düzenle

  3. Düzenleme ekranında, henüz seçili değilse özellik bayrağını etkinleştir onay kutusunu işaretleyin. Sonra özellik filtresini kullan onay kutusunu seçin.

  4. Hedef radyo düğmesini seçin.

  5. Aşağıdaki seçenekleri belirtin:

    • Varsayılan yüzde: 0
    • Gruplar: bir contoso.com adı ve 50 yüzdesi girin
    • Kullanıcılar: test@contoso.com

    Özellik filtresi ekranı şöyle görünür:

    Koşullu Özellik bayrağı

    Bu ayarlar aşağıdaki davranışa neden olacak:

    • Özellik bayrağı, test@contoso.com test@contoso.com Kullanıcılar bölümünde listelendiğinden, her zaman Kullanıcı için etkindir.
    • Contoso.com grubundaki diğer kullanıcıların %50 ' u için özellik bayrağı etkinleştirilir, çünkü contoso.com gruplar bölümünde 50 yüzdesi ile listelenir.
    • Varsayılan yüzde 0 olarak ayarlandığından, özellik diğer tüm kullanıcılar için her zaman devre dışıdır.
  6. Bu ayarları kaydetmek ve Özellik Yöneticisi ekranına dönmek için Uygula ' yı seçin.

  7. Özellik bayrağı için özellik filtresi artık hedefleme olarak görünür. Bu durum, hedefleme özelliği filtresi tarafından zorlanan ölçütlere göre, özellik bayrağının istek başına temelinde etkinleştirileceğini veya devre dışı bırakılacağını gösterir.

TargetingFilter eylemi

Bu özellik bayrağının etkilerini görmek için uygulamayı derleyin ve çalıştırın. İlk olarak, Beta öğesi araç çubuğunda görünmez, çünkü varsayılan yüzde seçeneği 0 olarak ayarlanmıştır.

test@contoso.comKayıt sırasında ayarladığınız parolayı kullanarak, şimdi olarak oturum açın. Beta öğesi artık araç çubuğunda görünür, çünkü test@contoso.com hedeflenen kullanıcı olarak belirtilir.

Aşağıdaki videoda bu davranış eylemi gösterilmektedir.

TargetingFilter eylemi

@contoso.comGrup ayarlarının davranışını görmek için e-posta adresleriyle ek kullanıcılar oluşturabilirsiniz. Bu kullanıcıların %50 Beta öğesini görür. Diğer %50 Beta öğesini görmez.

Sonraki adımlar