Översikt över funktionshantering

Traditionellt kräver leverans av en ny programfunktion en fullständig omdistribution av själva programmet. Testning av en funktion kräver ofta flera distributioner av programmet. Varje distribution kan ändra funktionen eller exponera funktionen för olika kunder för testning.

Funktionshantering är en modern metod för programvaruutveckling som frikopplar funktionsutgivningen från koddistributionen och möjliggör snabba ändringar i funktionstillgängligheten på begäran. Den använder en teknik som kallas funktionsflaggor (kallas även funktionsväxlingar och funktionsväxlar) för att dynamiskt administrera en funktions livscykel.

Funktionshantering hjälper utvecklare att lösa följande problem:

  • Hantering av kodgrenar: Använd funktionsflaggor för att omsluta nya programfunktioner som för närvarande är under utveckling. Sådana funktioner är "dolda" som standard. Du kan skicka funktionen på ett säkert sätt, även om den är oavslutad, och den kommer att förbli vilande i produktion. Med den här metoden, som kallas mörk distribution, kan du släppa all kod i slutet av varje utvecklingscykel. Du behöver inte längre underhålla kodgrenar över flera utvecklingscykler eftersom en viss funktion kräver mer än en cykel för att slutföras.
  • Test i produktion: Använd funktionsflaggor för att ge tidig åtkomst till nya funktioner i produktion. Du kan till exempel begränsa åtkomsten till gruppmedlemmar eller till interna betatestare. Dessa användare kommer att uppleva produktionsupplevelsen med fullständig återgivning i stället för en simulerad eller partiell upplevelse i en testmiljö.
  • Flighting: Använd funktionsflaggor för att stegvis distribuera nya funktioner till slutanvändare. Du kan rikta in dig på en liten procentandel av användarpopulationen först och öka den procentandelen gradvis över tid.
  • Omedelbar kill switch: Funktionsflaggor ger ett inbyggt säkerhetsnät för att släppa nya funktioner. Du kan aktivera och inaktivera programfunktioner utan att distribuera om någon kod. Om det behövs kan du snabbt inaktivera en funktion utan att återskapa och distribuera om programmet.
  • Selektiv aktivering: Använd funktionsflaggor för att segmentera användarna och leverera en specifik uppsättning funktioner till varje grupp. Du kan ha en funktion som bara fungerar i en viss webbläsare. Du kan definiera en funktionsflagga så att endast användare i webbläsaren kan se och använda funktionen. Med den här metoden kan du enkelt expandera webbläsarlistan som stöds senare utan att behöva göra några kodändringar.

Grundläggande begrepp

Här är flera nya termer som rör funktionshantering:

  • Funktionsflagga: En funktionsflagga är en variabel med binärt tillstånd på på eller av. Funktionsflaggan har också ett associerat kodblock. Funktionsflaggans tillstånd utlöser om kodblocket körs.
  • Funktionshanterare: En funktionshanterare är ett programpaket som hanterar livscykeln för alla funktionsflaggor i ett program. Funktionshanteraren tillhandahåller även ytterligare funktioner, inklusive cachelagring av funktionsflaggor och uppdatering av deras tillstånd.
  • Filter: Ett filter är en regel för att utvärdera tillståndet för en funktionsflagga. Potentiella filter är användargrupper, enhets- eller webbläsartyper, geografiska platser och tidsfönster.

En effektiv implementering av funktionshantering består av minst två komponenter som fungerar tillsammans:

  • Ett program som använder funktionsflaggor.
  • En separat lagringsplats som lagrar funktionsflaggor och deras aktuella tillstånd.

Använda funktionsflaggor i koden

Det grundläggande mönstret för att implementera funktionsflaggor i ett program är enkelt. En funktionsflagga är en boolesk tillståndsvariabel som styr en villkorssats i koden:

if (featureFlag) {
    // Run the following code
}

Du kan ange värdet featureFlag för statiskt:

bool featureFlag = true;

Du kan utvärdera flaggans tillstånd baserat på vissa regler:

bool featureFlag = isBetaUser();

Du kan utöka villkorsstyrd för att ange programbeteende för något av tillstånden:

if (featureFlag) {
    // This following code will run if the featureFlag value is true
} else {
    // This following code will run if the featureFlag value is false
}

Lagringsplats för funktionsflagga

Om du vill använda funktionsflaggor effektivt måste du externalisera alla funktionsflaggor som används i ett program. Du kan använda den här metoden för att ändra funktionsflaggans tillstånd utan att ändra och distribuera om själva programmet.

Azure App Configuration tillhandahåller en central lagringsplats för funktionsflaggor. Du kan använda den för att definiera olika typer av funktionsflaggor och manipulera deras tillstånd snabbt och säkert. Du kan sedan använda appkonfigurationsbiblioteken för olika programmeringsspråkramverk för att enkelt komma åt dessa funktionsflaggor från ditt program.

Funktionsflaggor i en ASP.NET Core-app visar hur appkonfigurationens .NET-provider och funktionshanteringsbibliotek används tillsammans för att implementera funktionsflaggor för din ASP.NET webbapp. Mer information om funktionsflaggor i Azure App Configuration finns i följande artiklar:

Nästa steg