Cvičení – Implementace přepínače funkcí pro řízení funkcí aplikace ASP.NET Core.
V tomto cvičení implementujte funkční příznak pro přepnutí sezónního prodejního banneru pro vaši aplikaci. Příznaky funkcí umožňují přepínat dostupnost funkcí bez opětovného nasazení aplikace.
V knihovně příznaků funkcí .NET použijete Správa funkcí. Tato knihovna poskytuje pomůcky k implementaci funkčních přepínačů ve vaší aplikaci. Knihovna podporuje jednoduché případy použití, jako jsou podmíněné příkazy, až po pokročilejší scénáře, jako je podmíněné přidávání směrování nebo filtrů akcí. Kromě toho podporuje filtry funkcí, které umožňují povolit funkce na základě konkrétních parametrů. Mezi příklady těchto parametrů patří čas okna, procenta nebo podmnožina uživatelů.
V této jednotce:
- Vytvořte instanci Azure App Configuration.
- Přidejte příznak funkce do obchodu App Configuration Store.
- Připojte aplikaci ke službě App Configuration Store.
- Upravte aplikaci tak, aby používala přepínač funkcí.
- Změňte stránku produktů tak, aby se zobrazil banner prodeje.
- Sestavte a otestujte aplikaci.
Otevření vývojového prostředí
Můžete použít codespace GitHubu, který je hostitelem cvičení, nebo cvičení dokončit místně v editoru Visual Studio Code.
Chcete-li použít codespace, vytvořte předem nakonfigurovaný GitHub Codespace s tento odkaz pro vytvoření Codespace.
Vytvoření a konfigurace prostoru kódu na GitHubu trvá několik minut. Po dokončení se zobrazí soubory kódu pro cvičení. Kód, který se používá pro zbytek tohoto modulu, je v adresáři /dotnet-feature-flags.
Pokud chcete použít Visual Studio Code, naklonujte úložiště https://github.com/MicrosoftDocs/mslearn-dotnet-cloudnative na svůj místní počítač. Potom:
- Nainstalujte všechny systémové požadavky pro spuštění vývojářského kontejneru v editoru Visual Studio Code.
- Ujistěte se, že je Docker spuštěný.
- V novém okně editoru Visual Studio Code otevřete složku klonovaného úložiště.
- Stisknutím kláves Ctrl+Shift+P otevřete paletu příkazů.
- Hledání: >Dev Containers: Opětovné sestavení a opětovné otevření v kontejneru
- V rozevíracím seznamu vyberte eShopLite - dotnet-feature-flags. Visual Studio Code vytvoří vývojový kontejner místně.
Vytvoření instance služby App Configuration
Provedením následujících kroků vytvořte instanci služby App Configuration ve svém předplatném Azure:
V novém podokně terminálu se přihlaste k Azure CLI.
az login --use-device-codeZobrazení vybraného předplatného Azure
az account show -o tablePokud je vybrané nesprávné předplatné, vyberte správné předplatné pomocí příkazu az account set.
Spuštěním následujícího příkazu Azure CLI získejte seznam oblastí Azure a název přidružený k němu:
az account list-locations -o tableVyhledejte nejbližší oblast a použijte ji v dalším kroku k nahrazení
[Closest Azure region]Spuštěním následujících příkazů Azure CLI vytvořte instanci služby App Configuration:
export LOCATION=[Closest Azure region] export RESOURCE_GROUP=rg-eshop export CONFIG_NAME=eshop-app-features$SRANDOMMusíte změnit UMÍSTĚNÍ na Azure region blízko vás, například eastus. Pokud chcete změnit jiný název pro vaši skupinu prostředků nebo konfiguraci aplikace, změňte výše uvedené hodnoty.
Spuštěním následujícího příkazu vytvořte skupinu prostředků Azure:
az group create --name $RESOURCE_GROUP --location $LOCATIONSpuštěním následujícího příkazu vytvořte instanci App Configuration:
az appconfig create --resource-group $RESOURCE_GROUP --name $CONFIG_NAME --location $LOCATION --sku FreeZobrazí se varianta následujícího výstupu:
{ "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,Spuštěním tohoto příkazu načtěte připojovací řetězec pro instanci App Configuration:
az appconfig credential list --resource-group $RESOURCE_GROUP --name $CONFIG_NAME --query [0].connectionString --output tsvTento řetězec s předponou
Endpoint=představuje připojovací řetězec App Configuration Storu.Zkopírujte připojovací řetězec. Použijete ho za chvíli.
Uložte připojovací řetězec konfigurace aplikace
Teď do aplikace přidáte připojovací řetězec konfigurace aplikace. Proveďte následující kroky:
Otevřete soubor /dotnet-feature-flags/docker-compose.yml.
Přidejte novou proměnnou prostředí na řádku 13.
- ConnectionStrings:AppConfig=[PASTE CONNECTION STRING HERE]docker-compose.yml bude vypadat přibližně takto:
environment: - ProductEndpoint=http://backend:8080 - ConnectionStrings:AppConfig=Endpoint=https://eshop-app-features1168054702.azconfig.io;Id=<ID>;Secret=<Secret value>
Předchozí řádek představuje dvojici klíč-hodnota, ve které ConnectionStrings:AppConfig je název systémové proměnné. V projektu Store načte zprostředkovatel konfigurace proměnných prostředí jeho hodnotu.
Spropitné
Připojovací řetězec azure App Configuration obsahuje tajný kód ve formátu prostého textu. V reálných aplikacích zvažte integraci služby App Configuration se službou Azure Key Vault pro zabezpečené ukládání tajných kódů. Key Vault je pro tento modul mimo rozsah, ale pokyny najdete v kurzu: Použití odkazů na Key Vault v aplikaci ASP.NET Core.
Přidej příznak funkce do obchodu s konfigurací aplikace
V Azure App Configuration vytvořte a povolte pár klíč-hodnota, který se bude považovat za příznak funkce. Proveďte následující kroky:
Na jiné kartě prohlížeče se přihlaste k webu Azure Portal se stejným účtem a adresářem jako Azure CLI.
Pomocí vyhledávacího pole vyhledejte a otevřete prostředek konfigurace aplikace s předponou eshop-app-features.
V části Operations vyberte správce funkcí.
V horní nabídce vyberte + Vytvořit.
Zaškrtněte políčko povolení funkce pomocí příznaku.
Do textového pole Název příznaku funkce zadejte SeasonalDiscount.
Vyberte Použít.
Teď, když příznak funkce existuje v úložišti App Configuration, projekt Store vyžaduje určité změny, aby ho mohl přečíst.
Kontrola kódu
Zkontrolujte adresáře v podokně průzkumníka v integrovaném vývojovém prostředí (IDE). Všimněte si, že existují tři projekty DataEntities, Productsa Store. Projekt Store je aplikace Blazor. Projekt Products je knihovna .NET Standard, která obsahuje produktovou službu. Projekt DataEntities je knihovna .NET Standard, která obsahuje model produktu.
Připojení aplikace ke službě App Configuration Store
Pro přístup k hodnotám z úložiště konfigurace aplikace v aplikaci ASP.NET Core je potřeba konfigurační poskytovatel App Configuration.
V projektu Store použijte následující změny:
V okně terminálu přejděte do složky Store:
cd dotnet-feature-flags/StoreSpuštěním následujícího příkazu nainstalujte balíček NuGet obsahující zprostředkovatele konfigurace .NET pro službu App Configuration:
dotnet add package Microsoft.Azure.AppConfiguration.AspNetCore dotnet add package Microsoft.FeatureManagement.AspNetCore dotnet add package Microsoft.Extensions.Configuration.AzureAppConfigurationOtevřete soubor Store/Program.cs.
Přidejte nové odkazy na balíčky v horní části souboru:
using Microsoft.FeatureManagement; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration.AzureAppConfiguration;Přidejte tento kód pod // Přidejte kód AddAzureAppConfiguration komentář.
// 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();V předchozím fragmentu kódu:
- Metoda
Connectse ověřuje ve službě App Configuration Store. Vzpomeňte si, že připojovací řetězec se předává jako proměnná prostředíConnectionStrings:AppConfig. - Metoda
UseFeatureFlagsumožňuje knihovně Správa funkcí číst příznaky funkcí z App Configuration Storu. - Dvě
builder.Servicesvolání registrují služby knihovny správy funkcí s kontejnerem vkládání závislostí aplikace.
- Metoda
V dolní části souboru // Přidejte middleware konfigurace aplikacepřidejte tento kód:
app.UseAzureAppConfiguration();Předchozí kód přidá middleware pro konfiguraci aplikace do kanálu požadavku. Middleware aktivuje operaci aktualizace pro parametry správy funkcí pro každý příchozí požadavek. Pak je na poskytovateli
AzureAppConfiguration, aby se rozhodl na základě nastavení obnovení, kdy se má skutečně připojit k datovému skladu a získat hodnoty.
Aktivujte prodejní banner
Vaše aplikace teď může číst příznak funkce, ale stránku produktů je potřeba aktualizovat, aby se ukázalo, že probíhá výprodej. Proveďte následující kroky:
Otevřete soubor Store/Components/Pages/Products.razor.
Do horní části souboru přidejte následující kód:
@using Microsoft.FeatureManagement @inject IFeatureManager FeatureManagerPředchozí kód naimportuje obory názvů knihovny Feature Management a vloží do komponenty rozhraní
IFeatureManager.V části @code přidejte následující proměnnou pro uložení stavu příznaku funkce:
private bool saleOn = false;Do OnInitializedAsync metody přidejte následující kód:
saleOn = await FeatureManager.IsEnabledAsync("SeasonalDiscount");Metoda by měla vypadat jako následující kód:
protected override async Task OnInitializedAsync() { saleOn = await FeatureManager.IsEnabledAsync("SeasonalDiscount"); // Simulate asynchronous loading to demonstrate streaming rendering products = await ProductService.GetProducts(); }Na řádek 26 pod <!-- Add a sales alert for customers --> komentář přidejte následující kód:
<!-- Add a sales alert for customers --> @if (saleOn) { <div class="alert alert-success" role="alert"> Our sale is now on. </div> }Předchozí kód zobrazí upozornění na prodej, pokud je příznak funkce povolený.
Sestavení aplikace
Ujistěte se, že jste uložili všechny změny a nacházíte se v dotnet-feature-flags adresáři. V terminálu spusťte následující příkaz:
dotnet publish /p:PublishProfile=DefaultContainerSpusťte aplikaci pomocí Dockeru:
docker compose up
Otestujte přepínač funkce
Pokud chcete ověřit, že příznak funkce funguje podle očekávání v codespace, proveďte následující kroky:
- Přepněte na kartu PORTY a napravo od místní adresy portu Front End vyberte ikonu zeměkoule. Prohlížeč otevře novou kartu na domovské stránce.
- Vyberte Produkty.
Pokud používáte Visual Studio Code místně, otevřete http://localhost:32000/products.
Na portálu Azure můžete povolit a zakázat příznak funkce a aktualizovat stránku produktů, aby se zobrazilo, jak příznak funguje.