Przegląd pojęć dotyczących konfiguracji aplikacji

Ukończone

Tworzenie mikrousług dla środowiska rozproszonego stanowi istotne wyzwanie. Mikrousługi hostowane w chmurze często działają w wielu kontenerach w różnych regionach. Implementowanie rozwiązania oddzielające kod każdej usługi od konfiguracji ułatwia klasyfikowanie problemów we wszystkich środowiskach.

W tej lekcji dowiesz się, jak zintegrować funkcje konfiguracji ASP.NET Core i Docker z usługą aplikacja systemu Azure Configuration, aby skutecznie rozwiązać ten problem.

Zapoznasz się z artykułem:

  • ASP.NET Podstawowa infrastruktura konfiguracji.
  • Abstrakcję konfiguracji platformy Kubernetes — ConfigMap.
  • aplikacja systemu Azure Usługa konfiguracji.
  • Biblioteka zarządzania funkcjami platformy .NET.
  • Składniki flagi funkcji zaimplementowane w aplikacji.

Konfiguracja na platformie ASP.NET Core

Konfiguracja w projekcie ASP.NET Core jest zawarta w co najmniej jednym dostawcy konfiguracji platformy .NET. Dostawca konfiguracji jest abstrakcją dla określonego źródła konfiguracji, takiego jak plik JSON. Wartości źródła konfiguracji są reprezentowane jako kolekcja par klucz-wartość.

Aplikacja ASP.NET Core może zarejestrować wielu dostawców konfiguracji w celu odczytu ustawień z różnych źródeł. Przy użyciu domyślnego hosta aplikacji kilku dostawców konfiguracji jest automatycznie rejestrowanych. Następujące źródła konfiguracji są dostępne w podanej kolejności:

  1. Plik JSON (appsettings.json)
  2. Plik JSON (appsettings.{environment}.json)
  3. Wpisy tajne użytkownika
  4. Zmienne środowiskowe
  5. Wiersz polecenia

Każdy dostawca konfiguracji może współtworzyć własną wartość klucza. Ponadto każdy dostawca może zastąpić wartość od dostawcy, który został zarejestrowany wcześniej w łańcuchu niż sam. Biorąc pod uwagę kolejność rejestracji na powyższej liście, UseFeatureManagement parametr wiersza polecenia zastępuje zmienną środowiskową UseFeatureManagement . UseFeatureManagement Podobnie klucz w ramach appsettings.json programu może zostać zastąpiony przez UseFeatureManagement klucz przechowywany w pliku appsettings.Development.json.

Nazwy kluczy konfiguracji mogą opisywać hierarchię. Na przykład notacja eShop:Store:SeasonalSale odnosi się do funkcji SeasonalSale w ramach mikrousługi Store aplikacji eShop. Ta struktura może również mapować wartości konfiguracji na wykres obiektu lub tablicę.

Ważne

Niektóre platformy nie obsługują dwukropka w nazwach zmiennych środowiskowych. Aby zapewnić zgodność międzyplatformową, podwójne podkreślenie (__) jest używane zamiast dwukropka (:) do rozdzielenia kluczy. Na przykład eShop__Store__SeasonalSale to notacja równoważna międzyplatformowa dla elementu eShop:Store:SeasonalSale.

ASP.NET Core używa klasy ConfigurationBinder do mapowania wartości konfiguracji na obiekty i tablice. Mapowanie na nazwy kluczy odbywa się w sposób bez uwzględniania wielkości liter. Na przykład ConnectionString i connectionstring są traktowane jako klucze równoważne. Aby uzyskać więcej informacji, zobacz klucze i wartości.

Konfiguracja platformy Docker

W usłudze Docker jedną abstrakcją do obsługi konfiguracji jako kolekcji par klucz-wartość jest sekcja zmiennej środowiskowej pliku YAML kontenera. Poniższy fragment kodu to fragment pliku aplikacji 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=<ID>;Secret=<SECRET>
    ports:
      - "32000:8080"
    depends_on: 
      - backend

Fragment kodu pliku definiuje:

  • Zmienne przechowywane w environment sekcji pliku YAML, jak wyróżniono w poprzednim fragmencie kodu.
  • Przedstawiana aplikacji konteneryzowanej jako zmienne środowiskowe.
  • Mechanizm utrwalania wartości konfiguracji platformy .NET w aplikacjach mikrousług.

Zmienne środowiskowe to międzyplatformowy mechanizm zapewniający konfigurację środowiska uruchomieniowego aplikacjom hostowanymi w kontenerach platformy Docker.

Azure App Configuration

Scentralizowana usługa konfiguracji jest szczególnie przydatna w aplikacjach mikrousług i innych aplikacjach rozproszonych. W tym module przedstawiono aplikacja systemu Azure Configuration as a service na potrzeby centralnego zarządzania wartościami konfiguracji — w szczególności flag funkcji. Usługa ułatwia rozwiązywanie problemów z błędami, które pojawiają się podczas wdrażania konfiguracji z aplikacją.

App Configuration to w pełni zarządzana usługa, która szyfruje wartości kluczy magazynowanych i przesyłanych. Wartości konfiguracji przechowywane za jej pomocą można aktualizować w czasie rzeczywistym bez konieczności ponownego wdrażania lub ponownego uruchamiania aplikacji.

W aplikacji ASP.NET Core usługa aplikacja systemu Azure Configuration jest zarejestrowana jako dostawca konfiguracji. Oprócz rejestracji dostawcy aplikacja nie wie o sklepie App Configuration. Wartości konfiguracji można pobrać z niej za pomocą polecenia . Abstrakcja konfiguracji platformy NET — IConfiguration interfejs.

Biblioteka zarządzania funkcjami

Biblioteka zarządzania funkcjami udostępnia ustandaryzowane interfejsy API platformy .NET do zarządzania flagami funkcji w aplikacjach. Biblioteka jest dystrybuowana za pośrednictwem narzędzia NuGet w postaci dwóch różnych pakietów o nazwie Microsoft.FeatureManagement i Microsoft.FeatureManagement.AspNetCore. Ten ostatni pakiet udostępnia pomocników tagów do użycia w plikach Razor projektu ASP.NET Core. Poprzedni pakiet jest wystarczający, gdy pomocnicy tagów nie są potrzebne lub nie są używane z projektem ASP.NET Core.

Biblioteka jest zbudowana na szczycie IConfiguration. Z tego powodu jest on zgodny z dowolnym dostawcą konfiguracji platformy .NET, w tym dostawcą aplikacja systemu Azure Configuration. Ponieważ biblioteka jest oddzielona od konfiguracji aplikacja systemu Azure, integracja tych dwóch elementów jest możliwa za pośrednictwem dostawcy konfiguracji. Połączenie tej biblioteki z konfiguracją aplikacja systemu Azure umożliwia dynamiczne przełączanie funkcji bez implementowania pomocniczej infrastruktury.

Integracja z konfiguracją aplikacja systemu Azure

Aby zrozumieć integrację aplikacja systemu Azure Configuration i biblioteki zarządzania funkcjami, zapoznaj się z następującym fragmentem pliku projektu Program.cs ASP.NET Core:

string connectionString = builder.Configuration.GetConnectionString("AppConfig");

// Load configuration from Azure App Configuration
builder.Configuration.AddAzureAppConfiguration(options => {
  options.Connect(connectionString)
    .UseFeatureFlags();
});

W poprzednim fragmentze kodu:

  • Metoda aplikacji jest wywoływana w celu zarejestrowania builder.Configuration dostawcy konfiguracji dla magazynu aplikacja systemu Azure Configuration. Dostawca konfiguracji jest zarejestrowany za pośrednictwem wywołania metody AddAzureAppConfiguration.
  • Zachowanie dostawcy aplikacja systemu Azure Configuration jest konfigurowane przy użyciu następujących opcji:
    • Uwierzytelnij się w odpowiedniej usłudze platformy Azure za pośrednictwem parametry połączenia przekazanej do wywołania Connect metody. Parametry połączenia jest pobierana ze zmiennejconnectionString. Zarejestrowane źródła konfiguracji są udostępniane za pośrednictwem programu builder.Configuration.
    • Włącz obsługę flag funkcji za pośrednictwem wywołania metody UseFeatureFlags.
  • Dostawca aplikacja systemu Azure Configuration zastępuje wszystkich innych zarejestrowanych dostawców konfiguracji, ponieważ jest on zarejestrowany po innych.

Napiwek

W projekcie ASP.NET Core można uzyskać dostęp do listy zarejestrowanych dostawców, analizując configBuilder.Sources właściwość wewnątrz ConfigureAppConfigurationelementu .