Alkalmazáskonfigurációs fogalmak áttekintése
Az elosztott környezet mikroszolgáltatásainak létrehozása jelentős kihívást jelent. A felhőalapú mikroszolgáltatások gyakran több tárolóban futnak különböző régiókban. Egy olyan megoldás implementálása, amely elválasztja az egyes szolgáltatások kódját a konfigurációtól, megkönnyíti a problémák osztályozását minden környezetben.
Ebben a leckében megtudhatja, hogyan integrálhatja ASP.NET Core és Docker konfigurációs funkcióit Azure-alkalmazás Konfigurációval, hogy hatékonyan kezelje ezt a kihívást.
A következőt fogja áttekinteni:
- ASP.NET alapkonfigurációs infrastruktúra.
- Kubernetes-konfiguráció absztrakció – a ConfigMap.
- Azure-alkalmazás Konfigurációs szolgáltatás.
- .NET szolgáltatásfelügyeleti kódtár.
- Az alkalmazásban implementált funkciójelző összetevők.
ASP.NET Core-konfiguráció
Egy ASP.NET Core-projekt konfigurációja egy vagy több .NET-konfigurációszolgáltatóban található. A konfigurációszolgáltató egy adott konfigurációs forrás, például egy JSON-fájl absztrakciója. A konfigurációs forrás értékei kulcs-érték párok gyűjteményeként jelennek meg.
A ASP.NET Core-alkalmazások több konfigurációszolgáltatót is regisztrálhatnak a különböző forrásokból származó beállítások olvasásához. Az alapértelmezett alkalmazásgazda esetén a rendszer több konfigurációszolgáltatót is automatikusan regisztrál. A következő konfigurációs források érhetők el a felsorolt sorrendben:
- JSON-fájl (appsettings.json)
- JSON-fájl (appsettings.{environment}.json)
- Felhasználói titkos kódok
- Környezeti változók
- Parancssor
Minden konfigurációszolgáltató saját kulcsértéket adhat hozzá. Ezenkívül bármely szolgáltató felülbírálhat egy olyan szolgáltató értékét, amely korábban regisztrált a láncban, mint önmagában. Az előző listában szereplő regisztrációs sorrend alapján egy UseFeatureManagement
parancssori paraméter felülír egy környezeti változót UseFeatureManagement
. Hasonlóképpen, a UseFeatureManagement
benne lévő appsettings.json kulcsokat felül lehet bírálni egy UseFeatureManagement
, a következőben appsettings.Development.jsontárolt kulccsal: .
A konfigurációs kulcsok nevei leírhatják a hierarchiát. Az eShop:Store:SeasonalSale jelölés például az eShop alkalmazás Áruház mikroszolgáltatásában található Szezonális értékesítés funkcióra utal. Ez a struktúra a konfigurációs értékeket objektumdiagramra vagy tömbre is megfeleltetheti.
Fontos
Egyes platformok nem támogatják a környezeti változók neveinek kettőspontját. A platformfüggetlen kompatibilitás érdekében kettős aláhúzásjelet (__
) használ a rendszer a kulcsok elválasztásához kettőspont (:
) helyett. A platformfüggetlen ekvivalens jelölés például eShop__Store__SeasonalSale
a következőhöz eShop:Store:SeasonalSale
: .
ASP.NET Core egy ConfigurationBinderrel rendeli le a konfigurációs értékeket objektumokra és tömbökre. A kulcsnevek leképezése kis- és nagybetűket nem érzékelyítő módon történik. Például a ConnectionString
connectionstring
rendszer egyenértékű kulcsként kezeli őket. További információ: kulcsok és értékek.
Docker-konfiguráció
A Dockerben a konfiguráció kulcs-érték párok gyűjteményként való kezelésére az egyik absztrakció a tároló YAML-fájljának környezeti változó szakasza. Az alábbi kódrészlet egy részlet az alkalmazás fájljából docker-compose.yml
:
services:
frontend:
image: storeimage
build:
context: .
dockerfile: DockerfileStore
environment:
- ProductEndpoint=http://backend:8080
- ConnectionStrings:AppConfig=Endpoint=https://eshop-app-features.azconfig.io;Id=QWQy;Secret=V/4r/rhg/0tdy2L/AmMfBUcgTrYC4krRC7uFqbjRvDU=
ports:
- "32000:8080"
depends_on:
- backend
A fájlrészlet a következőket határozza meg:
- A YAML-fájl szakaszában
environment
tárolt változók az előző kódrészletben kiemelt módon. - A tárolóalapú alkalmazás környezeti változóként jelenik meg.
- A .NET-konfigurációs értékek mikroszolgáltatás-alkalmazásokban való megőrzésének mechanizmusa.
A környezeti változók platformfüggetlen mechanizmusok, amelyek futtatókörnyezeti konfigurációt biztosítanak a Docker-tárolókban üzemeltetett alkalmazások számára.
Azure App Configuration
A központosított konfigurációs szolgáltatás különösen hasznos mikroszolgáltatás-alkalmazásokban és más elosztott alkalmazásokban. Ez a modul a Azure-alkalmazás Konfiguráció szolgáltatást vezet be a konfigurációs értékek központi kezeléséhez– különösen a funkciójelzőkhöz. A szolgáltatás megkönnyíti a konfiguráció alkalmazással való üzembe helyezésekor felmerülő hibák elhárítását.
Az Alkalmazáskonfiguráció egy teljes mértékben felügyelt szolgáltatás, amely titkosítja a kulcsértékeket mind inaktív, mind átvitel közben. A benne tárolt konfigurációs értékek valós időben frissíthetők anélkül, hogy újra kellene üzembe helyeznie vagy újra kellene indítania egy alkalmazást.
Egy ASP.NET Core-alkalmazásban Azure-alkalmazás Konfiguráció konfigurációszolgáltatóként van regisztrálva. A szolgáltatói regisztráción kívül az alkalmazás nem tud az Alkalmazáskonfigurációs áruházról. A konfigurációs értékek a használatával kérhetők le. A NET konfigurációs absztrakciója – az IConfiguration
interfész.
Funkciókezelési kódtár
A szolgáltatásfelügyeleti kódtár szabványosított .NET API-kat biztosít a funkciójelzők alkalmazásokon belüli kezeléséhez. A kódtárat a NuGeten keresztül osztja el két különböző, nevesített Microsoft.FeatureManagement
csomag Microsoft.FeatureManagement.AspNetCore
formájában. Ez utóbbi csomag tag helpers for use in a ASP.NET Core project's Razor files. A korábbi csomag akkor elegendő, ha nincs szükség a címkesegítőkre, vagy ha nem ASP.NET Core-projekttel használja.
A kódtár a tetején IConfiguration
van felépítve. Ezért kompatibilis bármely .NET-konfigurációszolgáltatóval, beleértve a Azure-alkalmazás Konfiguráció szolgáltatóját is. Mivel a kódtár leválasztva van Azure-alkalmazás konfigurációról, a kettő integrálása a konfigurációszolgáltatón keresztül lehetséges. A kódtár Azure-alkalmazás Konfigurációval való kombinálásával dinamikusan válthat a funkciók között a támogató infrastruktúra implementálása nélkül.
Integráció a Azure-alkalmazás-konfigurációval
A Azure-alkalmazás-konfiguráció és a szolgáltatásfelügyeleti kódtár integrációjának megismeréséhez tekintse meg az alábbi részletet egy ASP.NET Core-projekt fájljábólProgram.cs
:
string connectionString = builder.Configuration.GetConnectionString("AppConfig");
// Load configuration from Azure App Configuration
builder.Configuration.AddAzureAppConfiguration(options => {
options.Connect(connectionString)
.UseFeatureFlags();
});
Az előző kódrészletben:
- A rendszer meghívja az alkalmazás metódusát
builder.Configuration
, hogy regisztráljon egy konfigurációszolgáltatót a Azure-alkalmazás Configuration Store-hoz. A konfigurációszolgáltató regisztrálva van a következőAddAzureAppConfiguration
hívással: . - A Azure-alkalmazás konfigurációszolgáltató viselkedése a következő beállításokkal van konfigurálva:
- Hitelesítés a megfelelő Azure-szolgáltatásban a metódushívásnak
Connect
átadott kapcsolati sztring keresztül. A kapcsolati sztring lekéri aconnectionString
változóból. A regisztrált konfigurációs források a következőn keresztülbuilder.Configuration
érhetők el: . - A funkciójelzők támogatásának engedélyezése a hívással.
UseFeatureFlags
- Hitelesítés a megfelelő Azure-szolgáltatásban a metódushívásnak
- A Azure-alkalmazás konfigurációszolgáltató felülírja az összes többi regisztrált konfigurációs szolgáltatót, mert az a többi után van regisztrálva.
Tipp.
Egy ASP.NET Core-projektben a regisztrált szolgáltatók listájához a ConfigureAppConfiguration
elemzésével férhet hozzá.