Einführung in YARP in C# - Wie man einen Reverse Proxy erstellt
Wenn es darum geht, den Webverkehr in einer .NET Core-Umgebung effizient zu verwalten, ist ein Reverse Proxy ein unverzichtbares Werkzeug. YARP, kurz für Yet Another Reverse Proxy, ist Microsofts äußerst flexibles und anpassbares Reverse-Proxy-Projekt, das speziell für das .NET-Ökosystem entwickelt wurde. In diesem Artikel tauchen wir tief in die ersten Schritte mit YARP ein, indem wir Tim Coreys umfassendem Tutorial "Intro To YARP In C# - How To Create a Reverse Proxy" folgen, in dem er die Einrichtung und Verwendung von YARP in einer .NET Core-Webanwendung demonstriert.
Beginnen wir mit einer Einführung in YARP, und wie Sie dieses Proxy-Framework in Ihren eigenen Projekten einsetzen können.
Was ist ein Reverse Proxy?
Bei 1:07 erklärt Tim, dass ein Reverse Proxy zwischen dem Client (Benutzer) und den Backend-Servern sitzt, die eingehenden Anfragen verwaltet und die Anfragen effizient an das richtige Ziel weiterleitet.
Tim erläutert bei 1:45, warum ein Proxy wichtig ist: nicht nur für den Lastausgleich, sondern auch für die Vereinfachung von Anfrage-Headern, die Sicherung von Verbindungen mit HTTPS und die Sicherstellung, dass Backend-Dienste vom direkten Zugriff isoliert sind. Durch die Verwendung eines Reverse Proxy können Sie Ihre .NET Core-Anwendungen problemlos skalieren, ohne Ihre interne Struktur offenzulegen.
Einführung in YARP
Bei 5:11 stellt Tim YARP vor - Yet Another Reverse Proxy. Tim erklärt, dass Microsoft die Notwendigkeit eines Proxy-Frameworks erkannt hat, das besser für die spezifischen Anforderungen seiner zahlreichen .NET-Anwendungen geeignet ist, was zur Entwicklung von YARP führte. YARP ist eine Bibliothek, die die wichtigsten Proxy-Funktionen auf modulare, robuste und erweiterbare Weise bereitstellt.

Diese Bibliothek befindet sich in aktiver Entwicklung, um sicherzustellen, dass sie die neuesten Funktionen enthält und die neuesten Technologien wie Linux, Windows und Cloud-Umgebungen unterstützt.
Darüber hinaus betont Tim die umfassende, gepflegte Dokumentation und die umfangreiche Dokumentation, die für YARP zur Verfügung steht und die neuen Entwicklern den Einstieg erleichtert.
Einrichten eines einfachen YARP-Projekts
Bei 6:14 startet Tim ein neues Projekt in Visual Studio mit dem net SDK. Er erstellt ein grundlegendes ASP.NET Core Web API-Projekt mit dem Namen Pessimistic API.

Tim um 7:02 Uhr modifiziert das Projekt, um eine Pessimistic-API zu erstellen, die einen Kaltwetterdienst simuliert. Diese einfache Net-Core-Anwendung ist der Backend-Server, an den YARP später einen Proxy senden wird.
Tim schlägt um 8:44 Uhr vor, das Projekt zu überprüfen, bevor er fortfährt, und sicherzustellen, dass der Beispieldienst korrekt auf Anfragen an /weatherforecast reagiert.
Erstellung des YARP-Gateways
Um 9:04 Uhr erstellt Tim ein leeres ASP.NET Core-Projekt namens YarpGateway. Dieses Projekt fungiert als Reverse Proxy.
Tim führt durch die Installation des erforderlichen Pakets, indem er zu NuGet-Pakete verwalten geht und nach dem Installationspaket YARP sucht (bei 10:24). Dabei wird YARP Reverse Proxy eingesetzt, die offizielle Bibliothek, die die benötigten Kernfunktionen des Proxys bereitstellt.
Konfiguration von YARP
Bei 12:02 demonstriert Tim, wie man die YARP-Konfiguration innerhalb von Program.cs mit Hilfe von:
builder.Services.AddReverseProxy().LoadFromConfig(builder.Configuration.GetSection("YARP"));
builder.Services.AddReverseProxy().LoadFromConfig(builder.Configuration.GetSection("YARP"));
Dieses Setup lädt Konfigurationsdateien, die die Routen und Cluster definieren - grundlegende Elemente bei der Verwendung von YARP für das Routing von Anfragen.
Routes entsprechen dem eingehenden Pfad, und Cluster definieren die Backend-Dienste, an die weitergeleitet wird. Diese modulare Konfiguration unterstützt das Hinzufügen erweiterter Funktionen wie Ratenbegrenzung, das Ersetzen von Modulen und die Feinabstimmung der Pfadverwaltung.
Tim weist darauf hin, dass dieses flexible Design der Grund dafür ist, dass YARP ein hochgradig anpassbarer Reverse Proxy ist, der sich für reale Projekte eignet.
Testen der grundlegenden Proxy-Einrichtung
Bei 20:02 zeigt Tim, wie das Backend Pessimistic API und das YarpGateway zusammen ausgeführt werden.
Wenn Sie zur URL /weatherforecast des Gateways navigieren, leitet YARP die eingehende Anfrage an den Backend-Server weiter, holt die Antwort ab und stellt sie bereit - ohne die interne URL zu veröffentlichen. Dies demonstriert die Proxy-Funktionalität und das Routing von Anfragen in Aktion.
Erweiterung um ein zweites Backend
Um 21:17 Uhr fügt Tim ein weiteres neues Projekt namens Optimistic API hinzu, das nur warme Temperaturen zurückgibt.
Er konfiguriert YARP mit mehreren Zielen innerhalb eines einzigen Clusters. Dies ermöglicht den Lastausgleich - die zufällige Verteilung eingehender Anfragen auf zwei Backend-Server.
Später, bei 26:26, erklärt Tim, dass Sie die Lastausgleichsstrategie weiter anpassen können, einschließlich Optionen wie Round-Robin oder benutzerdefinierte Logik auf der Grundlage von Anforderungsattributen.
Modernisierung einer statischen Website mit YARP
Bei 28:12 beschreibt Tim ein Beispiel aus der Praxis: die Aktualisierung seiner eigenen Website (iamtimcorey.com).
Er erstellt eine WebsiteUpgrade-Netcore-Webanwendung, die den gesamten Datenverkehr über eine Catch-All-Route an die ursprüngliche Website weiterleitet.

Diese Strategie ermöglicht schrittweise Aktualisierungen: Tim kann Seiten mit Razor neu aufbauen und modernisieren, während ältere Inhalte, die vom Altsystem bereitgestellt werden, weiterhin unterstützt werden. Eingehende Anfragen werden je nach Pfad automatisch entweder zur ursprünglichen Website oder zu den neuen Inhalten weitergeleitet.
Hinzufügen neuer Funktionen mit Razor Pages
Bei 34:30 fügt Tim Razor Pages in das Upgrade-Projekt ein. Er zeigt, wie man eine einfache Seite (/more) hinzufügt, die direkt von der neuen Anwendung bedient wird, während alles andere über einen Proxy erfolgt.
Dank der Flexibilität von YARP können neue Module und Funktionen hinzugefügt werden, ohne die bestehenden Backend-Dienste zu beeinträchtigen.
Implementierung von erweiterten Routing- und Pfad-Transformationen
Bei 39:03 erstellt Tim eine /random-Route, die den Pfad umschreibt und die Benutzer nach dem Zufallsprinzip auf drei verschiedene Kursseiten umleitet.
Er verwendet die Transforms-Funktion von YARP, um Request-Header und Pfade während des Proxying zu ändern, und zeigt, wie Entwickler das Verhalten für spezifische Anforderungen feinabstimmen können.
Tim stößt bei 44:03 auf einen Tippfehler, korrigiert ihn aber und betont, dass er Konfigurationsdateien sorgfältig beachten muss.
Einrichten von Round Robin Load Balancing
Bei 45:10 schaltet Tim das Zufallsrouting auf Round Robin um. Diese einfache Konfigurationsänderung verbessert die Vorhersehbarkeit bei der Verteilung des Datenverkehrs auf mehrere Seiten.

Sie hebt eines der Hauptmerkmale von YARP hervor: die einfache dynamische Anpassung von Verhaltensweisen allein durch Konfiguration, ohne tiefgreifende Änderungen am Code.
Abschluss: Warum sollten Sie sich für YARP entscheiden?
Bei 47:03 fasst Tim zusammen, warum YARP ein wichtiges Tool für moderne .NET Core-Anwendungen ist:
-
Sie ist als Bibliothek für eine einfache Integration konzipiert.
-
Sie bietet die wichtigsten Proxy-Funktionen, die Entwickler benötigen.
-
Sie wird von Microsoft aktiv weiterentwickelt.
-
Sie unterstützt Linux, Windows und HTTPS von Haus aus.
-
Sie verfügt über eine umfangreiche Dokumentation und eine umfassende, gepflegte Dokumentation.
-
Es ermöglicht die flexible Weiterleitung von Anfragen an mehrere Backend-Server.
-
Sie unterstützt die einfache Anpassung an spezifische Anforderungen.
- Sie ist produktionstauglich, skalierbar und auf Leistung getrimmt.
Tim ermutigt die Betrachter, noch mehr Funktionen zu erforschen, wie z. B. Ratenbegrenzung, Ersetzen von Modulen und tiefergehende API-Gateway-Setups, indem sie den offiziellen Dokumenten folgen oder einen vollständigen YARP-Kurs vorschlagen.
Abschließende Gedanken
Wenn Sie Tim Coreys vollständigem Video zur Einrichtung eines YARP Reverse Proxy folgen, kann jeder Entwickler schnell mit einem weiteren Reverse Proxy arbeiten. Ganz gleich, ob Sie einen komplexen Lastausgleich durchführen, Module ersetzen oder Ihre Website schrittweise aktualisieren, YARP Yet Another Reverse Proxy bietet eine solide, flexible Lösung für die Net Core-Welt. Besuchen Sie auch seinen YouTube-Kanal für weitere aufschlussreiche Videos.
