API Gateway für Mikroservices in C#: Vollständiger Leitfaden

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Warum Ihr C#-Projekt einen API Gateway benötigt?

\n\n

Stellen 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\n

Hier 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\n

Was ist ein API Gateway und warum wird es für Mikroservices benötigt?

\n\n

Ein 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
\n\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\n

Zwei Hauptwerkzeuge für API Gateway in C#

\n\n

Im .NET-Ökosystem gibt es zwei leistungsstarke Lösungen, die Ihre Aufmerksamkeit verdienen:

\n\n

Ocelot C#

\n

Wohl 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
\n\n

YARP .NET (Yet Another Reverse Proxy)

\n

Ein 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\n

In diesem Artikel konzentrieren wir uns auf Ocelot – es ist einfacher für den Einstieg und deckt 90% der typischen Aufgaben ab.

\n\n

Erstellen eines API Gateways in C# mit Ocelot: Schritt-für-Schritt-Anleitung

\n\n

Lassen Sie uns echten Code schreiben. Wir erstellen ein API-Gateway .NET, das Anfragen an zwei Mikroservices weiterleitet: UserService (Port 5001) und OrderService (Port 5002).

\n\n

Schritt 1: Projekt erstellen

\n

Öffnen Sie ein Terminal und führen Sie Folgendes aus:

\n
dotnet new webapi -n ApiGatewayDemo\ncd ApiGatewayDemo
\n\n

Installieren Sie das Ocelot-Paket:

\n
dotnet add package Ocelot
\n\n

Schritt 2: Routing-Konfiguration einrichten

\n

Erstellen Sie eine Datei ocelot.json im Stammverzeichnis des Projekts. Darin beschreiben wir die Routing-Regeln:

\n\n
{\n  "Routes": [\n    {\n      "DownstreamPathTemplate": "/api/users/{everything}",\n      "DownstreamScheme": "http",\n      "DownstreamHostAndPorts": [\n                

Blogs

Buchempfehlungen