Øvelse – Implementere et funksjonsflagg for å kontrollere ASP.NET Core-appfunksjoner
I denne øvelsen implementerer du et funksjonsflagg for å veksle mellom et sesongsalgsbanner for programmet. Med funksjonsflagg kan du veksle funksjonstilgjengelighet uten å distribuere appen på nytt.
Du bruker funksjonsbehandling i .NET-funksjonsflaggbiblioteket. Dette biblioteket gir hjelpere til å implementere funksjonsflagg i appen. Biblioteket støtter enkle brukstilfeller som betingede setninger i mer avanserte scenarioer, for eksempel betinget å legge til ruter eller handlingsfiltre. I tillegg støtter den funksjonsfiltre, som lar deg aktivere funksjoner basert på bestemte parametere. Eksempler på slike parametere inkluderer en vindustid, prosent eller et delsett av brukere.
I denne enheten vil du:
- Opprett en Azure App Configuration-forekomst.
- Legg til et funksjonsflagg i App Configuration Store.
- Koble appen til App Configuration Store.
- Endre programmet til å bruke funksjonsflagget.
- Endre produktsiden for å vise et salgsbanner.
- Bygg og test appen.
Åpne utviklingsmiljøet
Du kan velge å bruke et GitHub-kodeområde som er vert for øvelsen, eller fullføre øvelsen lokalt i Visual Studio Code.
Hvis du vil bruke et kodeområde, oppretter du et forhåndskonfigurert GitHub-kodeområde med denne koblingen for oppretting av kodeområde.
GitHub bruker flere minutter på å opprette og konfigurere kodeområdet. Når den er ferdig, ser du kodefilene for øvelsen. Koden som brukes for resten av denne modulen, er i /dotnet-feature-flags directory.
Hvis du vil bruke Visual Studio Code, kloner du https://github.com/MicrosoftDocs/mslearn-dotnet-cloudnative-repositoriet til den lokale maskinen. Da:
- Installer eventuelle systemrekvisiringer for å kjøre Utviklerbeholder i Visual Studio Code.
- Sørg for at Docker kjører.
- Åpne mappen til det klonede repositoriet i et nytt Visual Studio Code-vindu
- Trykk CTRL+SKIFT+P for å åpne kommandopaletten.
- Søk: >utviklerbeholdere: Gjenoppbygge og åpne på nytt i beholder
- Velg eShopLite – dotnet-feature-flags fra rullegardinlisten. Visual Studio Code oppretter utviklingsbeholderen lokalt.
Opprette en appkonfigurasjonsforekomst
Fullfør følgende fremgangsmåte for å opprette en appkonfigurasjonsforekomst i Azure-abonnementet:
Logg på Azure CLI i den nye terminalruten.
az login --use-device-codeVis det valgte Azure-abonnementet.
az account show -o tableHvis feil abonnement er valgt, velger du det riktige ved hjelp av az-kontosettet kommando.
Kjør følgende Azure CLI-kommando for å få en liste over Azure-områder og navnet som er knyttet til den:
az account list-locations -o tableFinn et område nærmest deg, og bruk det i neste trinn for å erstatte
[Closest Azure region]Kjør følgende Azure CLI-kommandoer for å opprette en appkonfigurasjonsforekomst:
export LOCATION=[Closest Azure region] export RESOURCE_GROUP=rg-eshop export CONFIG_NAME=eshop-app-features$SRANDOMDu må endre LOCATION til et Azure-område nær deg, for eksempel eastus. Hvis du vil at et annet navn for ressursgruppen eller appkonfigurasjonen skal endre verdiene ovenfor.
Kjør følgende kommando for å opprette Azure Resource Group:
az group create --name $RESOURCE_GROUP --location $LOCATIONKjør følgende kommando for å opprette en appkonfigurasjonsforekomst:
az appconfig create --resource-group $RESOURCE_GROUP --name $CONFIG_NAME --location $LOCATION --sku FreeEn variasjon av følgende utdata vises:
{ "createMode": null, "creationDate": "2023-10-31T15:40:10+00:00", "disableLocalAuth": false, "enablePurgeProtection": false, "encryption": { "keyVaultProperties": null }, "endpoint": "https://eshop-app-features1168054702.azconfig.io", "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/rg-eshop/providers/Microsoft.AppConfiguration/configurationStores/eshop-app-features1168054702", "identity": null,Kjør denne kommandoen for å hente tilkoblingsstrengen for appkonfigurasjonsforekomsten:
az appconfig credential list --resource-group $RESOURCE_GROUP --name $CONFIG_NAME --query [0].connectionString --output tsvDenne strengen som er prefiks med
Endpoint=representerer tilkoblingsstrengen for App Configuration Store.Kopier tilkoblingsstrengen. Du bruker den om et øyeblikk.
Lagre tilkoblingsstrengen for appkonfigurasjon
Nå legger du til tilkoblingsstrengen for appkonfigurasjon i programmet. Fullfør følgende fremgangsmåte:
Åpne filen /dotnet-feature-flags/docker-compose.yml.
Legg til en ny miljøvariabel på linje 13.
- ConnectionStrings:AppConfig=[PASTE CONNECTION STRING HERE]Den docker-compose.yml vil ligne på følgende YAML:
environment: - ProductEndpoint=http://backend:8080 - ConnectionStrings:AppConfig=Endpoint=https://eshop-app-features1168054702.azconfig.io;Id=<ID>;Secret=<Secret value>
Den forrige linjen representerer et nøkkelverdipar der ConnectionStrings:AppConfig er et miljøvariabelnavn. I Store prosjektet leser konfigurasjonsleverandøren for miljøvariabler verdien.
Tips
Tilkoblingsstrengen for Azure App Configuration inneholder en ren teksthemmelighet. I virkelige apper kan du vurdere å integrere appkonfigurasjon med Azure Key Vault for sikker lagring av hemmeligheter. Key Vault er utenfor området for denne modulen, men veiledning finnes på Opplæring: Bruk Key Vault-referanser i en ASP.NET Core-app.
Legg til funksjonsflagget i App Configuration Store
Opprett og aktiver et nøkkelverdipar i Azure App Configuration for å behandles som et funksjonsflagg. Fullfør følgende fremgangsmåte:
Logg på Azure-portalen i en annen nettleserfane, med samme konto og katalog som Azure CLI.
Bruk søkeboksen til å finne og åpne ressursprefikset for appkonfigurasjon med eshop-app-features.
Velg Funksjonsbehandlingunder Operasjoner .
Velg + Oppretti den øverste menyen.
Merk av for Aktivere funksjonsflagg.
Skriv inn SeasonalDiscounti tekstboksen Funksjonsflagg .
Velg Bruk.
Nå som funksjonsflagget finnes i App Configuration Store, krever Store-prosjektet noen endringer for å lese det.
Se gjennom kode
Se gjennom katalogene i explorer-ruten i IDE. Vær oppmerksom på at det er tre prosjekter DataEntities, Productsog Store. Det Store prosjektet er Blazor-appen. Prosjektet Products er et .NET Standard-bibliotek som inneholder produkttjenesten. Prosjektet DataEntities er et .NET Standard-bibliotek som inneholder produktmodellen.
Koble appen til App Configuration Store
Hvis du vil ha tilgang til verdier fra App Configuration Store i en ASP.NET Core-app, er konfigurasjonsleverandøren for appkonfigurasjon nødvendig.
Bruk følgende endringer på Store prosjektet:
Gå til Store-mappen i terminalvinduet:
cd dotnet-feature-flags/StoreKjør følgende kommando for å installere en NuGet-pakke som inneholder .NET-konfigurasjonsleverandøren for App Configuration-tjenesten:
dotnet add package Microsoft.Azure.AppConfiguration.AspNetCore dotnet add package Microsoft.FeatureManagement.AspNetCore dotnet add package Microsoft.Extensions.Configuration.AzureAppConfigurationÅpne filen Store/Program.cs.
Legg til de nye pakkereferansene øverst i filen:
using Microsoft.FeatureManagement; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration.AzureAppConfiguration;Legg til denne koden under // Legg til AddAzureAppConfiguration-koden kommentar.
// Retrieve the connection string var connectionString = builder.Configuration.GetConnectionString("AppConfig"); // Load configuration from Azure App Configuration builder.Configuration.AddAzureAppConfiguration(options => { options.Connect(connectionString) .UseFeatureFlags(); }); // Register the Feature Management library's services builder.Services.AddFeatureManagement(); builder.Services.AddAzureAppConfiguration();I den forrige kodesnutten:
- Metoden
Connectgodkjennes til App Configuration Store. Husk at tilkoblingsstrengen sendes som en miljøvariabelConnectionStrings:AppConfig. - Metoden
UseFeatureFlagsgjør det mulig for funksjonsbehandlingsbiblioteket å lese funksjonsflagg fra App Configuration Store. - De to
builder.Servicesanropene registrerer funksjonsbehandlingsbibliotekets tjenester med appens avhengighetsinjeksjonsbeholder.
- Metoden
Legg til denne koden nederst i filen nedenfor // Legg til mellomvare for appkonfigurasjon:
app.UseAzureAppConfiguration();Den forrige koden legger til mellomvare for appkonfigurasjon i forespørselssamlebåndet. Mellomvaren utløser en oppdateringsoperasjon for funksjonsbehandlingsparameterne for hver innkommende forespørsel. Deretter er det opp til
AzureAppConfigurationleverandøren å bestemme, basert på oppdateringsinnstillinger, når du faktisk skal koble til butikken for å få verdiene.
Aktivere et salgsbanner
Appen kan nå lese funksjonsflagget, men produktsiden må oppdateres for å vise at et salg er aktivert. Fullfør følgende fremgangsmåte:
Åpne filen Store/Components/Pages/Products.razor.
Legg til følgende kode øverst i filen:
@using Microsoft.FeatureManagement @inject IFeatureManager FeatureManagerDen foregående koden importerer funksjonsbehandlingsbibliotekets navneområder og setter inn
IFeatureManager-grensesnittet i komponenten.Legg til følgende variabel i @code-delen for å lagre tilstanden til funksjonsflagget:
private bool saleOn = false;Legg til følgende kode i OnInitializedAsync-metoden:
saleOn = await FeatureManager.IsEnabledAsync("SeasonalDiscount");Metoden skal se ut som følgende kode:
protected override async Task OnInitializedAsync() { saleOn = await FeatureManager.IsEnabledAsync("SeasonalDiscount"); // Simulate asynchronous loading to demonstrate streaming rendering products = await ProductService.GetProducts(); }Legg til følgende kode under <!-- Add a sales alert for customers --> kommentar på linje 26:
<!-- Add a sales alert for customers --> @if (saleOn) { <div class="alert alert-success" role="alert"> Our sale is now on. </div> }Den foregående koden viser et salgsvarsel hvis funksjonsflagget er aktivert.
Bygg appen
Sørg for at du har lagret alle endringene, og er i dotnet-feature-flags katalog. Kjør følgende kommando i terminalen:
dotnet publish /p:PublishProfile=DefaultContainerKjør appen ved hjelp av docker:
docker compose up
Test funksjonsflagget
Hvis du vil bekrefte at funksjonsflagget fungerer som forventet i et kodeområde, gjør du følgende:
- Bytt til fanen PORTER, og velg deretter globusikonet til høyre for den lokale adressen for Front End port. Nettleseren åpner en ny fane på hjemmesiden.
- Velg Produkter.
Hvis du bruker Visual Studio Code lokalt, åpner du http://localhost:32000/products.
I Azure-portalen kan du aktivere og deaktivere funksjonsflagget og oppdatere produktsiden for å se flagget i aksjon.