Wprowadzenie do YARP w C# - Jak stworzyć odwrotny proxy
Jeśli chodzi o efektywne zarządzanie ruchem internetowym w środowisku .NET Core, niezbędnym narzędziem staje się odwrotny serwer proxy. YARP, skrót od Yet Another Reverse Proxy, to wysoce elastyczny i konfigurowalny projekt serwera proxy odwrotnego firmy Microsoft, stworzony specjalnie dla ekosystemu .NET. W tym artykułe zagłębimy się w temat rozpoczęcia pracy z YARP, korzystając z obszernego samouczka Tima Coreya pt. "Wprowadzenie do YARP w C# — jak utworzyć odwrotny serwer proxy", w którym autor pokazuje konfigurację i użycie YARP w aplikacji internetowej .NET Core.
Zacznijmy od wprowadzenia do YARP i tego, jak można wykorzystać tę platformę proxy we własnych projektach.
Czym jest odwrotny serwer proxy?
W 1:07 Tim wyjaśnia, że odwrotny serwer proxy znajduje się pomiędzy klientem (użytkownikami) a serwerami zaplecza, zarządzając przychodzącymi żądaniami i efektywnie kierując je do odpowiedniego miejsca docelowego.
O godz. 1:45 Tim wyjaśnia, dłączego serwer proxy jest ważny: nie tylko w celu równoważenia obciążenia, ale także w celu uproszczenia nagłówków żądań, zabezpieczenia połączeń za pomocą protokołu HTTPS oraz zapewnienia izolacji usług zaplecza od bezpośredniego dostępu. Korzystając z odwrotnego proxy, możesz łatwo skalować swoje aplikacje .NET Core bez ujawniania swojej wewnętrznej struktury.
Wprowadzenie do YARP
O 5:11 Tim przedstawia YARP — Yet Another Reverse Proxy. Tim wyjaśnia, że firma Microsoft zdała sobie sprawę z potrzeby stworzenia frameworka proxy, który byłby lepiej dostosowany do konkretnych potrzeb szerokiej gamy aplikacji .NET, co doprowadziło do powstania YARP. Został on zaprojektowany jako biblioteka zapewniająca podstawową funkcjonalność proxy w sposób modułowy, solidny i rozszerzalny.

Biblioteka ta jest aktywnie rozwijana, co gwarantuje, że zawiera najnowsze funkcje i obsługuje najnowsze technologie, takie jak Linux, Windows i środowiska chmurowe.
Ponadto Tim podkreśla, że YARP ma kompleksową i aktualną dokumentację, co znacznie ułatwia rozpoczęcie pracy nowym programistom.
Konfiguracja podstawowego projektu YARP
O 6:14 Tim rozpoczyna nowy projekt w Visual Studio przy użyciu zestawu SDK platformy .NET. Tworzy podstawowy projekt ASP.NET Core Web API o nazwie Pessimistic API.

O godz. 7:02 Tim modyfikuje projekt, tworząc Pessimistic API, które symuluje usługę w warunkach niskich temperatur. Ta prosta aplikacja .NET Core stanowi serwer zaplecza, do którego YARP będzie później kierować ruch.
O godz. 8:44 Tim sugeruje sprawdzenie projektu przed kontynuowaniem prac, upewniając się, że przykładowa usługa prawidłowo odpowiada na żądania wysyłane pod adresem /weatherforecast.
Tworzenie bramy YARP
O godz. 9:04 Tim tworzy pusty projekt ASP.NET Core o nazwie YarpGateway. Ten projekt działa jako odwrotny serwer proxy.
Tim przeprowadza użytkownika przez proces instalacji niezbędnego pakietu, przechodząc do sekcji Zarządzaj pakietami NuGet i wyszukując pakiet instalacyjny YARP (o godz. 10:24). Wykorzystuje to YARP Reverse Proxy, oficjalną bibliotekę zapewniającą niezbędną podstawową funkcjonalność proxy.
Konfiguracja YARP
O godz. 12:02 Tim pokazuje, jak skonfigurować YARP w pliku Program.cs, używając:
builder.Services.AddReverseProxy().LoadFromConfig(builder.Configuration.GetSection("YARP"));
builder.Services.AddReverseProxy().LoadFromConfig(builder.Configuration.GetSection("YARP"));
Ta konfiguracja ładuje pliki konfiguracyjne, które definiują trasy i klastry — podstawowe elementy podczas korzystania z YARP do routingu żądań.
Trasy odpowiadają ścieżce przychodzącej, a klastry definiują usługi zaplecza, do których należy przekierować dane. Ta konfiguracja modułowa umożliwia dodawanie zaawansowanych funkcji, takich jak ograniczanie szybkości, wymiana modułów i precyzyjne dostosowywanie zarządzania ścieżkami.
Tim zwraca uwagę, że właśnie ta elastyczna konstrukcja sprawia, że YARP jest wysoce konfigurowalnym serwerem proxy odwrotnym, nadającym się do rzeczywistych projektów.
Testowanie podstawowej konfiguracji proxy
O godz. 20:02 Tim pokazuje, jak działa zarówno backend Pessimistic API, jak i YarpGateway.
Po przejściu do adresu URL bramy /weatherforecast YARP przekierowuje przychodzące żądanie do serwera zaplecza, pobiera odpowiedź i ją obsługuje — bez ujawniania wewnętrznego adresu URL. To pokazuje działanie funkcji proxy i routingu żądań w praktyce.
Rozbudowa o drugi backend
O godz. 21:17 Tim dodaje kolejny nowy projekt o nazwie Optimistic API, który zwraca wyłącznie ciepłe temperatury.
Konfiguruje on YARP z wieloma miejscami docelowymi w ramach jednego klastra. Umożliwia to równoważenie obciążenia — losowe rozdzielanie przychodzących żądań między dwa serwery zaplecza.
Później, o 26:26, Tim wyjaśnia, że można dalej dostosowywać strategię równoważenia obciążenia, w tym opcje takie jak round robin lub logika niestandardowa oparta na atrybutach żądania.
Modernizacja statycznej strony internetowej za pomocą YARP
W 28:12 Tim opisuje przykład z życia wzięty: modernizację swojej własnej strony internetowej (iamtimcorey.com).
Tworzy on aplikację internetową WebsiteUpgrade opartą na .NET Core, która przekierowuje cały ruch do oryginalnej witryny za pomocą trasy typu catch-all.

Strategia ta pozwala na stopniowe aktualizacje: Tim może przebudowywać i modernizować strony przy użyciu Razor, jednocześnie nadal obsługując starsze treści dostarczane przez dotychczasowy system. Przychodzące żądania są automatycznie kierowane albo do oryginalnej witryny, albo do nowej treści, w zależności od ścieżki.
Dodawanie nowych funkcji za pomocą Razor Pages
O 34:30 Tim dodaje Razor Pages do projektu aktualizacji. Pokazuje, jak dodać prostą stronę (/more), która jest obsługiwana bezpośrednio przez nową aplikację, podczas gdy wszystko inne jest obsługiwane przez serwer proxy.
Dzięki elastyczności YARP można dodawać nowe moduły i funkcje bez zakłócania działania istniejących usług zaplecza.
Wdrażanie zaawansowanego routingu i transformacji ścieżek
W 39:03 Tim tworzy trasę /random, która przepisuje ścieżkę i losowo przekierowuje użytkowników między trzema różnymi stronami kursu.
Wykorzystuje on funkcję transformacji YARP do modyfikowania nagłówków żądań i ścieżek podczas działania proxy, pokazując, w jaki sposób programiści mogą dostosować działanie do konkretnych potrzeb.
Tim napotyka literówkę około 44:03, ale poprawia ją, podkreślając konieczność zwracania szczególnej uwagi na pliki konfiguracyjne.
Konfiguracja równoważenia obciążenia metodą Round Robin
W 45:10, Tim zmienia losowe trasowanie na ronda robina. Ta prosta zmiana konfiguracji poprawia przewidywalność przy rozdzielaniu ruchu pomiędzy wieloma stronami.

Podkreśla to jedną z kluczowych cech YARP: łatwość dostosowywania zachowań dynamicznie poprzez samą konfigurację, bez głębokich zmian w kodzie.
Wnioski: Dłączego wybrać YARP?
W 47:03, Tim kończy, podsumowując, dłączego YARP jest kluczowym narzędziem dla nowoczesnych aplikacji net core:
-
Jest zaprojektowany jako biblioteka do łatwej integracji.
-
Zapewnia podstawową funkcjonalność proxy, której potrzebują programiści.
-
Jest w aktywnym rozwoju przez Microsoft.
-
Obsługuje Linux, Windows i HTTPS bezpośrednio po wyjęciu z pudełka.
-
Posiada obszerną dokumentację i kompleksową utrzymaną dokumentację.
-
Pozwala na elastyczne trasowanie żądań do wielu serwerów backendowych.
-
Obsługuje łatwe dostosowywanie do specyficznych potrzeb.
- Jest gotowy do użytku produkcyjnego, skalowalny i dostrojony do wydajności.
Tim zachęca widzów do eksploracji nawet większej liczby funkcji, jak ograniczanie przepustowości, wymiana modułów i głębsze konfiguracje bramy API, poprzez śledzenie oficjalnej dokumentacji lub zasugerowanie pełnego kursu YARP.
Podsumowanie
Śledząc kompletny film Tima Corey'a o konfiguracji YARP Reverse Proxy, każdy programista może szybko nadrobić kolejny proxy odwrotny. Bez względu na to, czy obsługujesz złożone równoważenie obciążenia, wymieniasz moduły, czy stopniowo aktualizujesz swoją stronę, YARP Yet Another Reverse Proxy oferuje solidne, elastyczne rozwiązanie dla świata net core. Sprawdź jego Kanał YouTube po więcej wnikliwych filmów.
