Povolení připraveného zavedení funkcí pro cílové cílové skupiny
Příznaky funkcí umožňují v aplikaci dynamicky aktivovat nebo deaktivovat funkce. Filtry funkcí určují stav příznaku funkce pokaždé, když se vyhodnotí. Microsoft.FeatureManagementKnihovna obsahuje TargetingFilter , která umožňuje příznak funkce pro zadaný seznam uživatelů a skupin nebo pro zadané procento uživatelů. TargetingFilter je "rychlé". To znamená, že jakmile jednotliví uživatelé obdrží funkci, uvidí tuto funkci i u všech budoucích požadavků. Nástroj můžete použít TargetingFilter k povolení funkce pro určitý účet během ukázky, pro postupně se zavádějí nové funkce uživatelům v různých skupinách nebo "zazvoněních" a mnohem víc.
V tomto článku se dozvíte, jak zavést novou funkci ve ASP.NET Core webové aplikaci do určených uživatelů a skupin pomocí nástroje TargetingFilter s konfigurací aplikací Azure.
Vytvoření webové aplikace s příznaky funkcí a ověřováním
K uvedení funkcí na základě uživatelů a skupin budete potřebovat webovou aplikaci, která uživatelům umožní přihlásit se.
Vytvořte webovou aplikaci, která se ověřuje s použitím místní databáze pomocí následujícího příkazu:
dotnet new mvc --auth Individual -o TestFeatureFlagsSestavte a spusťte a pak vyberte odkaz Registrovat v pravém horním rohu pro vytvoření nového uživatelského účtu. Použijte e-mailovou adresu
test@contoso.com. Na obrazovce potvrzení registrace vyberte kliknutím sem potvrďte svůj účet.Postupujte podle pokynů v rychlém startu: Přidání příznaků funkcí do aplikace ASP.NET Core pro přidání příznaku funkce do nové webové aplikace.
Zapne příznak funkce v konfiguraci aplikace. Ověřte, zda tato akce řídí viditelnost položky beta v navigačním panelu.
Aktualizace kódu webové aplikace pro použití TargetingFilter
V tomto okamžiku můžete použít příznak funkce k povolení nebo zakázání Beta funkce pro všechny uživatele. Chcete-li povolit příznak funkce pro některé uživatele při jejich zakázání pro ostatní, aktualizujte kód, který chcete použít TargetingFilter . V tomto příkladu použijete jako ID uživatele e-mailovou adresu přihlášeného uživatele a jako skupinu určíte část název domény e-mailové adresy. Přidáte uživatele a skupinu do TargetingContext . TargetingFilterPomocí tohoto kontextu určí stav příznaku funkce pro každý požadavek.
Aktualizujte na nejnovější verzi
Microsoft.FeatureManagement.AspNetCorebalíčku.dotnet add package Microsoft.FeatureManagement.AspNetCorePřidejte soubor TestTargetingContextAccessor. cs :
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); } } }V části Startup. cs přidejte odkaz na obor názvů Microsoft. FeatureManagement. FeatureFilters :
using Microsoft.FeatureManagement.FeatureFilters;Aktualizujte metodu ConfigureServices pro registraci za
TargetingFiltervolánímAddFeatureManagement():services.AddFeatureManagement() .AddFeatureFilter<TargetingFilter>();Aktualizujte metodu ConfigureServices a přidejte ji do kolekce služeb, kterou jste
TestTargetingContextAccessorvytvořili v předchozím kroku. TargetingFilter ho používá k určení kontextu cílení pokaždé, když je vyhodnocen příznak funkce.services.AddSingleton<ITargetingContextAccessor, TestTargetingContextAccessor>();
Celá metoda ConfigureServices bude vypadat takto:
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>();
}
Aktualizace příznaku funkce pro použití TargetingFilter
V Azure Portal přejdete do konfiguračního úložiště aplikace a vyberete správce funkcí.
Vyberte kontextovou nabídku pro příznak funkce beta , který jste vytvořili v rychlém startu. Vyberte Upravit.

Na obrazovce pro Úpravy zaškrtněte políčko Povolit příznak funkce , pokud již není vybráno. Pak zaškrtněte políčko použít filtr funkcí .
Vyberte přepínač cílení .
Zadejte následující možnosti:
- Výchozí procento: 0
- Skupiny: zadejte název contoso.com a procento 50 .
- Uživatelé:
test@contoso.com
Obrazovka filtru funkcí bude vypadat takto:

Výsledkem těchto nastavení je následující chování:
- Příznak funkce je vždy povolen pro uživatele
test@contoso.com, protožetest@contoso.comje uveden v části Uživatelé . - Příznak funkce je povolený pro 50% dalších uživatelů ve skupině contoso.com , protože contoso.com je uvedený v oddílu groups s procentem 50.
- Tato funkce je vždycky zakázaná pro všechny ostatní uživatele, protože výchozí procento je nastavené na 0.
Výběrem možnosti použít uložíte tato nastavení a vrátíte se na obrazovku správce funkcí .
Filtr funkcí pro příznak funkce se teď zobrazuje jako cílený. Tento stav indikuje, že příznak funkce bude povolený nebo zakázaný podle jednotlivých požadavků, a to na základě kritérií vydaných filtrem funkcí cílení .
TargetingFilter v akci
Chcete-li zobrazit účinky tohoto příznaku funkce, sestavte a spusťte aplikaci. Zpočátku se položka beta nezobrazí na panelu nástrojů, protože výchozí procento je nastavené na 0.
Teď se přihlaste jako test@contoso.com a použijte heslo, které jste nastavili při registraci. Položka beta verze se nyní zobrazí na panelu nástrojů, protože test@contoso.com je zadána jako cílový uživatel.
Následující video ukazuje toto chování v akci.

Můžete vytvořit další uživatele s @contoso.com e-mailovými adresami, abyste viděli chování nastavení skupiny. 50% těchto uživatelů uvidí položku beta . Druhá 50% neuvidí položku beta verze .