Uzyskiwanie dostępu do ustawień podczas konfiguracji w ASP.NET Core / .NET 8
ASP.NET Core to wieloplatformowy, otwarty framework webowy Microsoftu, który pozwala deweloperom budować nowoczesne aplikacje webowe i natywne dla chmury aplikacje efektywnie. Z najnowszą wersją .NET, ASP.NET Core nadal oferuje lekką, bezpieczną i elastyczną platformę do tworzenia aplikacji webowych, które mogą działać na Windows, Linux i macOS.
W tym artykule zbadamy dogłębniej, jak dostępować do ustawień konfiguracji podczas setupu w ASP.NET Core, podążając za 10-minutowym materiałem szkoleniowym Tima Coreya. Tim demonstruje, jak deweloperzy mogą pobierać wartości konfiguracyjne w program.cs, zanim wstrzykiwanie zależności zostanie całkowicie skonfigurowane, co jest kluczową techniką do tworzenia elastycznych i łatwych w utrzymaniu aplikacji webowych.
Dlaczego wczesny dostęp do konfiguracji jest ważny
Tim Corey zaczyna od podkreślenia znaczenia ustawień aplikacji w ASP.NET Core. Według Tima, appsettings.json to "świetne miejsce do przechowywania konfiguracji", ponieważ pozwala deweloperom zmieniać wartości bez ponownej kompilacji lub ponownej implementacji aplikacji.
W rozwoju webowym często polega się na konfiguracji usług, takich jak ustawianie URL dla API lub dostosowywanie parametrów specyficznych dla środowiska. Zazwyczaj w aplikacji webowej .NET Core deweloperzy uzyskują dostęp do konfiguracji poprzez wstrzykiwanie zależności:
@inject IConfiguration config
Jednak Tim zauważa, że czasami potrzebny jest dostęp do tych wartości konfiguracyjnych podczas instalacji, na przykład przy konfiguracji klientów HTTP lub innych usług w program.cs. Zrobienie tego zapewnia, że aplikacje pozostaną elastyczne i adaptacyjne, przechodząc między różnymi środowiskami, takimi jak rozwój, staging czy produkcja.
Konfigurowanie minimalnej aplikacji Blazor
Aby zademonstrować, Tim tworzy prostą aplikację Blazor, wyłączając interaktywność, aby skupić się całkowicie na program.cs. Podkreśla, że architektura ASP.NET Core pozwala na oddzielenie konfiguracji od kodu, co ułatwia zarządzanie aplikacjami webowymi i projektami natywnymi dla chmury.
To podejście jest również zgodne z wieloplatformowym charakterem platformy .NET, ponieważ ta sama logika konfiguracji działa na Windows, Linux i macOS bez modyfikacji.
Konfigurowanie klienta HTTP za pomocą ustawień aplikacji
Tim prowadzi nas przez scenariusz, w którym klient HTTP jest zarejestrowany w program.cs:
builder.Services.AddHttpClient("LocalAPI", client =>
{
client.BaseAddress = new Uri("https://localhost:7654");
});
Choć to działa, Tim wyjaśnia, że twarde zakodowanie URL nie jest idealne. Jeśli punkt końcowy API się zmieni, deweloperzy muszą zaktualizować kod i utworzyć pull request na potrzeby wdrożenia. Zamiast tego, zaleca przechowywanie wartości w appsettings.json:
{
"LocalAPI": "https://localapi.fromconfig"
}
To zapewnia, że framework dynamicznie pobiera konfigurację, unikając ponownej kompilacji i zmniejszając błędy podczas wdrożenia. Daje to również zgodność z najlepszymi praktykami dla bezpiecznych i łatwych w utrzymaniu aplikacji webowych.
Dostęp do konfiguracji w program.cs
Tim pokazuje, jak pobierać wartości konfiguracyjne przed wstrzykiwaniem zależności:
var localApiBaseAddress = builder.Configuration.GetValue<string>("LocalAPI");
Kluczowe punkty, które Tim podkreśla:
-
builder.Configuration jest dostępny przed builder.Build().
-
Wartości mogą pochodzić z appsettings.json, zmiennych środowiskowych, sekretów użytkownika lub nawet Azure Key Vault.
- Pozwala to na dynamiczne konfigurowanie usług, logowania lub innych komponentów frameworka webowego.
Tim ustawia punkt przerwania, aby sprawdzić, czy URL LocalAPI jest poprawnie pobierany. Zauważa, że ta metoda działa na wszystkich obsługiwanych platformach, co czyni ją idealną dla wieloplatformowego rozwoju.
Zarządzanie brakującą konfiguracją
Tim odnosi się do scenariuszy, w których klucz konfiguracji może być brakujący lub pusty. Pokazuje, że można podać wartość domyślną używając GetValue:
var localApiBaseAddress = builder.Configuration.GetValue<string>("LocalAPI", "https://localhost:7654");
To gwarantuje, że aplikacje są gotowe do uruchomienia nawet jeśli konfiguracja nie jest ustawiona, poprawiając obsługę błędów i produktywność deweloperów. Zmniejsza to także prawdopodobieństwo problemów z czasem wykonywania w wdrożeniach w chmurze lub na różnych platformach.
Zalety wczesnego dostępu do konfiguracji
Tim wymienia kilka zalet pobierania konfiguracji podczas setupu:
-
Dynamiczna konfiguracja: Usługi takie jak HttpClient mogą używać punktów końcowych specyficznych dla środowiska.
-
Unikaj ponownej kompilacji: Zmiana URL lub innych ustawień nie wymaga już zmian w kodzie.
-
Elastyczne logowanie i usługi: Konfiguruj logery lub inne usługi frameworka webowego używając wartości konfiguracyjnych.
- Wspiera wiele źródeł: Konfiguracja może pochodzić z appsettings.json, zmiennych środowiskowych, sekretów użytkownika lub chmurowych skarbców kluczy.
Podkreśla, że to podejście utrzymuje aplikacje lekkie i łatwe w utrzymaniu, a jednocześnie pełne zalet ASP.NET Core i platformy .NET.
Uruchamianie i testowanie aplikacji (6:03–7:36)
Tim pokazuje, jak porządkuje kod i uruchamia aplikację. Pokazuje, że URL LocalAPI jest albo pobierany z konfiguracji, albo wraca do wartości domyślnej:
var localApiBaseAddress = builder.Configuration.GetValue<string>("LocalAPI", "https://localhost:7654");
Taka elastyczna konfiguracja pozwala deweloperom kontynuować budowanie aplikacji webowych bez martwienia się o twarde zakodowane URL lub powtarzające się pull requesty dla drobnych zmian. Zapewnia to również płynne wieloplatformowe wdrożenia na Linux, Windows lub macOS.
Wnioski
Tim Corey podsumowuje podkreślając prostotę i efektywność dostępu do konfiguracji podczas setupu w ASP.NET Core / .NET 8. Korzystając z:
builder.Configuration.GetValue()
deweloperzy mogą:
-
Dynamicznie konfigurować usługi
-
Unikać twardego kodowania wartości w frameworku
-
Wspierać wiele środowisk i platform
- Poprawiać produktywność deweloperów i obsługę błędów
Ta technika jest kluczowa do tworzenia bezpiecznych, łatwych w utrzymaniu i gotowych do chmury aplikacji webowych. Praktyczna demonstracja Tima podkreśla, jak nawet lekka, wieloplatformowa aplikacja ASP.NET Core może być solidna, elastyczna i gotowa na nowoczesny rozwój webowy.
Film Tima Coreya jest obowiązkowy dla deweloperów, którzy chcą opanować zarządzanie konfiguracją w ASP.NET Core. Przestrzegając jego kroków, możesz zapewnić, że twoje aplikacje są elastyczne, łatwe w utrzymaniu i gotowe na wieloplatformowe wdrożenia, środowiska chmurowe oraz nowoczesną architekturę webową.
