IRONSOFTWAREHOME

Zrozumieć C# Set Flag Enum: Przypisywanie flag

The Options Pattern in C# in 10 Minutes or Less

Tim Corey

10m 39s

Zarządzanie konfiguracją jest kluczowym aspektem budowy skalowalnych i łatwych w utrzymaniu aplikacji w C#. Jednym z najskuteczniejszych sposobów obsługi ustawień konfiguracji jest użycie wzorca opcji. W swoim filmie, The Options Pattern in C# in 10 Minutes or Less, Tim Corey dostarcza zwięzłego ale wnikliwego wyjaśnienia tego wzorca i jak go efektywnie zaimplementować. W tym artykułe zbadamy wzorzec opcji poprzez wyjaśnienia i demonstracje Tima z jego filmu.

Wprowadzenie

Tim rozpoczyna, przedstawiając wzorzec opcji jako potężny lecz prosty sposób na uzyskanie informacji z plików konfiguracyjnych i wstrzyknięcie ich do zależności (DI). Podkreśla on kilka zalet tego wzorca, takich jak:

  • Możliwość zarządzania zmianami wartości podczas działania.
  • Wsparcie dla walidacji danych.
  • Kompatybilność z różnymi typami projektów w C#, w tym aplikacjami Blazor.

Tim podkreśla, że mimo iż zazwyczaj dostarcza dogłębnego szkolenia technicznego, ten film jest zaprojektowany jako przewodnik szybkiego startu do implementacji wzorca opcji.

Konfiguracja projektu

Tim zaczyna od otwarcia Visual Studio z aplikacją Web Blazor (tylko renderowanie po stronie serwera). Dokonał już kilku modyfikacji, aby przyspieszyć demonstrację. Kluczowe ustawienie obejmuje:

  • Tworzenie pliku appsettings.json z sekcja CloudInfo zawierajaca trzy pary klucz-wartosc.
  • Uzycie modelu Plain Old CLR Object (POCO) o nazwie CloudInfoOptions, ktory mapuje sie na te wartosci konfiguracji.

Plik konfiguracyjny

Plik appsettings.json zawiera nastepujaca sekcje:

{
  "CloudInfo": {
    "Storage": "Azure Storage",
    "Website": "Azure Static Web Apps",
    "API": "Azure Web App"
  }
}
JSON

Tim wyjasnia, ze choc uzywa appsettings.json, wartosci konfiguracji moga rowniez pochodzic z:

  • appsettings.Development.json
  • secrets.json
  • Zmiennych środowiskowych

Wiązanie konfiguracji z opcjami

Teraz Tim wyjasnia, jak wiazac wartosci konfiguracji z klasa CloudInfoOptions i wstrzykiwac je do DI.

Rejestrowanie opcji w Program.cs

W Program.cs, Tim dodaje nastepujaca linie wewnatrz builder.Services:

builder.Services.Configure<CloudInfoOptions>(builder.Configuration.GetSection("CloudInfo"));

To wiaze sekcje CloudInfo z pliku appsettings.json z klasa CloudInfoOptions. Tim zauważa, że ten krok zapewnia dostępność wartości w wstrzykiwaniu zależności.

Wstrzykiwanie opcji w komponencie Razor

Tim przechodzi do komponentu strony glownej (Index.razor) i modyfikuje go, aby dynamicznie wyswietlac wartosci konfiguracji.

Wstrzykuje interfejs IOptions do komponentu:

@inject IOptions<CloudInfoOptions> CloudInfoOptions
Text

Aby pobrac rzeczywiste wartosci, przypisuje je wewnatrz OnInitialized:

protected override void OnInitialized()
{
    CloudInfo = CloudInfoOptions.Value;
}

Tim wyjasnia, ze IOptions<t> dostarcza instancje singleton dla wartosci konfiguracji, co oznacza, ze pozostaja one stala przez cale zycie aplikacji. Gdy aplikacja działa, wartości konfiguracji poprawnie pojawiają się na stronie.

Badanie różnych interfejsów opcji

Tim przedstawia trzy różne sposoby użycia wzorca opcji:

1. Opcje singleton

Domyslnie, IOptions<t> dostarcza instancje singleton. Tim pokazuje, że jeśli plik konfiguracyjny zostanie zaktualizowany, gdy aplikacja jest uruchomiona, zmiany nie są odzwierciedlone dopóki aplikacja nie zostanie zrestartowana.

2. Opcje z zakresem - Uzycie IOptionsSnapshot<t>

Aby umożliwić aktualizacje na żądanie, Tim modyfikuje wstrzykiwanie do:

@inject IOptionsSnapshot<CloudInfoOptions> CloudInfoOptions
Text

To zapewnia, że każde nowe żądanie HTTP otrzymuje nowe wartości konfiguracji. Tim testuje to, modyfikujac appsettings.json, odswiezajac strone i pokazujac, ze zaktualizowane wartosci pojawiaja sie od razu.

Wyjasnia, ze IOptionsSnapshot<t> jest przydatne w scenariuszach, gdzie zmiany musza byc odzwierciedlone bez ponownego uruchamiania aplikacji, ale nie wymagaja monitorowania na zywo.

3. Monitorowanie zmian - Uzycie IOptionsMonitor<t>

Na koniec Tim przedstawia IOptionsMonitor<t>, ktore umozliwia wykrywanie zmian w czasie rzeczywistym. Aktualizuje wstrzykiwanie do:

@inject IOptionsMonitor<CloudInfoOptions> CloudInfoOptions
Text

W przeciwienstwie do IOptionsSnapshot, ktore aktualizuje sie na zadanie, IOptionsMonitor<t> moze wyzwalac zdarzenia przy zmianie wartosci konfiguracji. Jest to szczególnie przydatne, gdy trzeba reagować na zmiany konfiguracji dynamicznie.

Tim zauwaza, ze IOptionsMonitor<t> jest wspierane przez singleton, ale potrafi dynamicznie odswiezac wartosci, gdy zmienia sie podstawowy plik konfiguracyjny.

Wnioski

Tim kończy film podsumowując kluczowe różnice między trzema podejściami:

InterfejsCzas trwaniaAktualizuje się przy zmianie
IOptions<t>SingletonNie
IOptionsSnapshot<t>OgraniczonyNa żądanie
IOptionsMonitor<t>SingletonTak

Podkreśla on, że chociaż wzorzec opcji upraszcza zarządzanie konfiguracją, zrozumienie tych różnych wariantów pomaga wybrać odpowiednie podejście w zależności od wymagań projektu.

Podążając za podejściem Tima, programiści mogą efektywnie zarządzać ustawieniami aplikacji, zapewniać płynne wstrzykiwanie zależności i skutecznie obsługiwać zmiany konfiguracji w czasie działania. Aby lepiej zrozumieć, obejrzyj cały film i odwiedź jego kanał po więcej wnikliwych filmów o C#.

Earn More by Sharing What You Love

Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!

Let's Stay in Touch!

Join our newsletter, you’ll get exclusive access on article updates. We value your privacy

Key in blue circle

Uzyskaj natychmiast swój darmowy 30-dniowy Klucz Testowy.

Your trial license will be sent to your email address

Brak ograniczeń. 100% dostępności. Bez karty kredytowej.

bullet_checkedNie wymaga karty kredytowej ani tworzenia kontaBrak ograniczeń. 100% dostępności. Bez karty kredytowej.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Otrzymaj swoją Konsultację Bez Zobowiązań
Wypełnij poniższy formularz lub wyślij e-mail na sales@ironsoftware.com
Twoje dane zawsze będą utrzymywane w tajemnicy.
Zaufane przez miliony inżynierów na całym świecie
Logotypy klientów Iron Software
Otrzymaj swój darmowy Klucz Próbny na 30 dni natychmiast.
Nie wymaga karty kredytowej ani tworzenia konta