Konfiguracja aplikacji .net core

Konfiguracja aplikacji bez ifowania w kodzie? Tak, wszystko dzięki dobrym i mądrym “chłopakom” z Microsoftu. Czytam o dotnet core oraz o tym jak można dobrze ustawić konfiguracje aplikacji od środowiska na którym zostanie uruchomione i chce się z wami podzielić tą wiedzą, uważam że pomoże ona wam (mi też) w lepszym i czytelniejszym przygotowywaniu  konfigurowaniu.

Poniżej kilka przykładów na to jak do tego tematu podejść.

Konfiguracja aplikacji na podstawie plików:


W tym przypadku do domyślnej (@8) konfiguracji dołączany jest także plik. Który? To zależy od środowiska, nazwa środowiska jest zawarta w nazwie pliku (@9). Sam plik rozszerza ustawienia lub je zastępuje, oba przypadki są wspierane.

To jest pierwsza z opcji jak można wpływać na ustawienia aplikacji w zależności od środowiska na którym się uruchamia.

Konfiguracja aplikacji na podstawie nazwy metody

Idąc dalej i czyniąc kod trochę czytelniejszym, można dołożyć do klasy startup metody które w swojej nazwie posiadają nazwę specyficzną dla środowiska:


Powyżej widać metody ConfigureServices które zostały wzbogacone o nazwy środowisk na których mogą być uruchomione i w zależności od tego  aplikacja może zachowywać się inaczej. Inaczej to inne poziomy logowania, inne zachowanie aplikacji.

  • ConfigureOstrapilaServices
  • ConfigureStadnickiServices
  • ConfigureProductionServices

ConfigureServices – ta metoda zostanie uruchomiona gdy nazwa środowiska jest pusta, lub nie zostanie odnaleziona metoda pasująca do nazwy. Tzw. fallback

Konfiguracja aplikacji na podstawie klasy

Ostatnią z możliwości jest przepięcie całej klasy, całość wygląda podobnie do poprzedniego przykłady z metodą, ale w tym przypadku cała klasa zostanie wykorzystana do konkretyzacji konfiguracji, wymaga to odrobinę innego startu aplikacji:


Jako starup podaję się namespace, który zawierać powinien definicję klasy Startup lub BlahStartup gdzie Blah to nazwa środowiska, przykłady:

Lub domyślny w przypadku nie dopasowania nazwy środowiska czy brak nazwy środowiska:

Uwaga, ominąłem metodę ConfigureService aby zaoszczędzić miejsca, ale każda z tych klas to pełnowartościowy startup aplikacji, także można dowolnie poszaleć i w zasadzie odpalić całkowicie inną aplikację.

Czyli co?

Cieszy mnie to, że w zależności od środowiska w prosty i czytelny sposób mam wpływ na to co i jak zostanie skonfigurowane. Cieszy mnie to, że wszystko to zostało tak ładnie obmyślone i wystarczy zmiana wartości ASPNETCORE_ENVIRONMENT aby mieć wpływ to jako cała aplikacja będzie działać inaczej.

Kod dostępny jest pod linkiem:
https://bitbucket.org/jstadnicki/

 

One thought on “Konfiguracja aplikacji .net core

  1. Pingback: dotnetomaniak.pl

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.