Warum Ihr C#-Projekt einen API Gateway benötigt?
\n\nStellen Sie sich vor, Sie bauen eine moderne Webanwendung in C#. Sie haben einen Benutzerservice, einen Bestellservice, einen Zahlungsservice – und jeder läuft auf seinem eigenen Port, vielleicht sogar auf verschiedenen Servern. Die Client-Anwendung (Frontend oder mobile App) muss all diese Adressen, Datenformate und Authentifizierungsprotokolle kennen. Ein Albtraum, oder?
\n\nHier kommt der API Gateway für C#-Dienste ins Spiel – ein zentraler Einstiegspunkt, der die gesamte "Schmutzarbeit" übernimmt: Routing, Antwortaggregation, Token-Überprüfung, Caching und Lastenausgleich. In diesem Artikel schauen wir uns an, wie man ein API-Gateway .NET in der Praxis implementiert, unter Verwendung moderner Tools wie Ocelot C# und YARP .NET.
\n\nWas ist ein API Gateway und warum wird es für Mikroservices benötigt?
\n\nEin API Gateway ist eine Zwischenschicht zwischen Clients und Ihren Backend-Diensten. Es fungiert als "Dispatcher": Es nimmt eingehende HTTP-Anfragen entgegen, analysiert sie und leitet sie an die entsprechenden C#-Mikroservices weiter. Dabei kann das Gateway zusätzliche Aufgaben übernehmen:
\n\n- \n
- Anfragen-Routing – Anfragen basierend auf URL, Headern oder Parametern an verschiedene Dienste weiterleiten. \n
- Datenaggregation – Antworten von mehreren Diensten sammeln und als einheitliches JSON an den Client zurückgeben. \n
- API Gateway Authentifizierung – JWT-Token oder API-Schlüssel überprüfen, bevor die Anfrage den Dienst erreicht. \n
- Lastenausgleich – Anfragen auf mehrere Instanzen eines Dienstes verteilen. \n
- Caching – Antworten für häufig angefragte Daten temporär speichern. \n
- Rate Limiting – Die Anzahl der Anfragen eines einzelnen Clients begrenzen. \n
Ohne ein API-Gateway .NET müsste jeder Client die gesamte Systemarchitektur kennen. Mit einem Gateway kommuniziert der Client nur mit einem einzigen Endpunkt, während alles andere "unter der Haube" passiert.
\n\nZwei Hauptwerkzeuge für API Gateway in C#
\n\nIm .NET-Ökosystem gibt es zwei leistungsstarke Lösungen, die Ihre Aufmerksamkeit verdienen:
\n\nOcelot C#
\nWohl der beliebteste API Gateway für C#-Dienste. Ocelot ist eine Open-Source-Bibliothek, die Gateway-Funktionen zu jeder ASP.NET Core-Anwendung hinzufügt. Es unterstützt:
\n- \n
- Routing basierend auf JSON-Konfiguration \n
- Antwortaggregation \n
- Authentifizierung und Autorisierung \n
- Rate Limiting \n
- Lastenausgleich (RoundRobin, LeastConnection) \n
- WebSockets \n
YARP .NET (Yet Another Reverse Proxy)
\nEin Projekt von Microsoft, das als leistungsstarker Reverse-Proxy positioniert ist. YARP ist flexibler und leistungsfähiger, erfordert aber mehr manuelle Konfiguration. Es ist ideal, wenn Sie die vollständige Kontrolle über jede Anfrage benötigen.
\n\nIn diesem Artikel konzentrieren wir uns auf Ocelot – es ist einfacher für den Einstieg und deckt 90% der typischen Aufgaben ab.
\n\nErstellen eines API Gateways in C# mit Ocelot: Schritt-für-Schritt-Anleitung
\n\nLassen Sie uns echten Code schreiben. Wir erstellen ein API-Gateway .NET, das Anfragen an zwei Mikroservices weiterleitet: UserService (Port 5001) und OrderService (Port 5002).
Schritt 1: Projekt erstellen
\nÖffnen Sie ein Terminal und führen Sie Folgendes aus:
\ndotnet new webapi -n ApiGatewayDemo\ncd ApiGatewayDemo\n\nInstallieren Sie das Ocelot-Paket:
\ndotnet add package Ocelot\n\nSchritt 2: Routing-Konfiguration einrichten
\nErstellen Sie eine Datei ocelot.json im Stammverzeichnis des Projekts. Darin beschreiben wir die Routing-Regeln:
{\n "Routes": [\n {\n "DownstreamPathTemplate": "/api/users/{everything}",\n "DownstreamScheme": "http",\n "DownstreamHostAndPorts": [\n