Zum Fußzeileninhalt springen
.NET HILFE

Ocelot .NET (Funktionsweise für Entwickler)

Ocelot API Gateway ist eine .NET-Bibliothek, die das API-Gateway-Muster implementiert, das üblicherweise in API-Gateways verwendet wird, um Anfragen über mehrere Microservices hinweg zu bearbeiten. Es fungiert als leichtgewichtiges API-Gateway und leitet Anfragen von Clients an nachgelagerte Dienste weiter. Dieser Artikel bietet einen detaillierten Einblick in die Rolle des Ocelot API Gateway zwischen Clients und nachgelagerten Diensten und behandelt deren Installation, Konfiguration, wichtige Funktionen und praxisnahe Beispiele, um deren Fähigkeiten zu demonstrieren. Wir werden auch IronPDF Overview und Ocelot API kombiniert erkunden.

Was ist Ocelot .NET?

Ocelot .NET (Wie es für Entwickler funktioniert): Abbildung 1 - Ocelot .NET Homepage

Ocelot ist eine Open-Source-API-Gateway-Lösung für .NET-Anwendungen, die entwickelt wurde, um das Routing von Anfragen über mehrere Mikrodienste zu erleichtern. Es fungiert als Reverse Proxy, der HTTP-Anfragen von Clients verwaltet und sie an die entsprechenden Dienste in einer ASP.NET Core-Umgebung weiterleitet. Entwickelt auf ASP.NET Core integriert sich Ocelot nahtlos in das .NET-Ökosystem und bietet ein umfangreiches Set an Funktionen, die für moderne Anwendungen unerlässlich sind.

Schlüsselmerkmale von Ocelot

Routing

Im Kern der Funktionalität von Ocelot steht seine Routing-Fähigkeit. Es gleicht eingehende Anfragen mit den entsprechenden Servicerouten aufgrund der von Entwicklern festgelegten Konfiguration ab und kann mit Service-Discovery-Mechanismen integriert werden. Dies beinhaltet die Unterstützung von Wildcard-Routing, was besonders nützlich ist, wenn es um unterschiedliche API-Versionen oder zahlreiche Serviceendpunkte geht.

Middleware / Delegierende Handler

Ocelot ermöglicht es Entwicklern, benutzerdefinierte Middleware oder Handler zu injizieren, die Anfragen und Antworten verarbeiten können, bevor sie den Client oder den Dienst erreichen. Dies ist nützlich für das Hinzufügen von Headern, das Protokollieren von Anfragen oder sogar das Ändern der Antwortstruktur nach Bedarf.

Lastausgleich

Ocelot unterstützt eine Vielzahl von Lastverteilungsstrategien von Haus aus, wie Round Robin, Least Connection und einen benutzerdefinierten Anbieter, wenn keine der vordefinierten Strategien die Anforderungen erfüllt. Diese Funktion stellt sicher, dass die Last gleichmäßig auf die verfügbaren Dienste verteilt wird, was die allgemeine Robustheit und Effizienz der Anwendung verbessert.

Authentifizierung und Autorisierung

Die Sicherung von API-Endpunkten ist kritisch, und Ocelot bietet Unterstützung für die Integration mit bestehenden Authentifizierungsanbietern wie Identity Server. Es unterstützt beliebte Authentifizierungsschemata, einschließlich JWT und OAuth2, und ermöglicht eine granulare Kontrolle über den Benutzerzugriff auf Dienste.

Rate Limiting und QoS

Die Ratenbegrenzung ist wichtig, um Missbrauch zu verhindern und eine faire Nutzung der Dienste zu gewährleisten, indem die Anzahl der Anfragen beschränkt wird, die ein Benutzer in einem bestimmten Zeitraum stellen kann. Quality of Service (QoS)-Optionen wie das Festlegen von Zeitlimits und Wiederholungen stellen sicher, dass Dienste unter verschiedenen Netzwerkbedingungen und Lasten verfügbar und reaktionsschnell bleiben.

Einrichten von Ocelot in einem .NET-Projekt

Um Ocelot in Ihr Projekt zu integrieren, müssen Sie das Ocelot-Paket über NuGet installieren und es in der Program-Klasse konfigurieren:

dotnet add package Ocelot

Ocelot .NET (Wie es für Entwickler funktioniert): Abbildung 2 - Ocelot .NET Installation über den NuGet-Paket-Manager

Konfigurieren Sie die Dienste, einschließlich der Anforderungs-Builder-Middleware, in Ihrer Startup.cs oder Program.cs Klasse, um den Dienstcontainer einzurichten:

public void ConfigureServices(IServiceCollection services)
{
    // Add Ocelot services to the service collection
    services.AddOcelot();
}

public async void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    // Use the developer exception page when in development mode
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }

    // Start Ocelot middleware
    await app.UseOcelot();
}
public void ConfigureServices(IServiceCollection services)
{
    // Add Ocelot services to the service collection
    services.AddOcelot();
}

public async void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    // Use the developer exception page when in development mode
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }

    // Start Ocelot middleware
    await app.UseOcelot();
}
$vbLabelText   $csharpLabel

Konfiguration von Routen in Ocelot

Ocelot verwendet eine Konfigurationsdatei, typischerweise ocelot.json, um die Routing-Regeln zu definieren. Hier ist ein komplexeres Beispiel, das mehrere Routen-Konfigurationen demonstriert:

{
    "ReRoutes": [
        {
            "DownstreamPathTemplate": "/api/users/{id}",
            "DownstreamScheme": "https",
            "DownstreamHostAndPorts": [
                {
                    "Host": "userapi.com",
                    "Port": 443
                }
            ],
            "UpstreamPathTemplate": "/users/{id}",
            "UpstreamHttpMethod": ["Get"]
        },
        {
            "DownstreamPathTemplate": "/api/products/{id}",
            "DownstreamScheme": "https",
            "DownstreamHostAndPorts": [
                {
                    "Host": "productapi.com",
                    "Port": 443
                }
            ],
            "UpstreamPathTemplate": "/products/{id}",
            "UpstreamHttpMethod": ["Get"]
        }
    ],
    "GlobalConfiguration": {
        "BaseUrl": "http://yourgateway.com"
    }
}

Diese Konfiguration spezifiziert, wie Anfragen zum API-Gateway über den Pfad und die HTTP-Methode zu verschiedenen nachgelagerten Diensten weitergeleitet werden, wobei die JSON-Datei für die Einrichtung verwendet wird.

Verwendung von IronPDF mit Ocelot .NET

Ocelot .NET (Wie es für Entwickler funktioniert): Abbildung 3 - IronPDF Homepage

Die Kombination von Ocelot mit der HTML-zu-PDF-Konvertierung von IronPDF in einer .NET-Anwendung bietet eine leistungsstarke Lösung, bei der Sie PDF-Generierungsanfragen an einen bestimmten Dienst weiterleiten oder sie intern bearbeiten können. Hier führe ich Sie durch die Einrichtung einer grundlegenden .NET Core-Anwendung, die Ocelot als API-Gateway und IronPDF zur Erstellung von PDFs aus HTML verwendet.

IronPDF überzeugt in der HTML-zu-PDF-Konvertierung, indem es den originalen Layouts und Stilen präzise erhält. Es ist ideal zur Erstellung von PDFs aus webbasierten Inhalten wie Berichten, Rechnungen und Dokumentationen. Mit Unterstützung für HTML-Dateien, URLs und rohe HTML-Strings erstellt IronPDF problemlos hochwertige PDF-Dokumente.

using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // Convert HTML string to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // Convert HTML file to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // Convert HTML string to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // Convert HTML file to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
$vbLabelText   $csharpLabel

Schritt 1: Einrichten der .NET Core Webanwendung

Erstellen Sie zuerst ein neues .NET Core-Web-API-Projekt. Sie können dies mit der .NET CLI oder Visual Studio machen.

Verwendung der .NET CLI:

dotnet new webapi -n OcelotWithIronPDF
cd OcelotWithIronPDF
dotnet new webapi -n OcelotWithIronPDF
cd OcelotWithIronPDF
SHELL

Schritt 2: Hinzufügen notwendiger Pakete

Sie müssen Ocelot und IronPDF installieren. Sie können diese Pakete über NuGet hinzufügen.

dotnet add package Ocelot
dotnet add package IronPdf
dotnet add package Ocelot
dotnet add package IronPdf
SHELL

Schritt 3: Ocelot konfigurieren

Fügen Sie eine ocelot.json-Datei zum Stamm Ihres Projekts hinzu, um das Routing von Ocelot zu konfigurieren. Diese Einrichtung geht davon aus, dass Ocelot PDF-Generierungsanfragen an einen bestimmten Pfad weiterleiten soll, der innerhalb der gleichen Anwendung von IronPDF behandelt wird.

{
    "ReRoutes": [
        {
            "DownstreamPathTemplate": "/api/pdf",
            "DownstreamScheme": "https",
            "DownstreamHostAndPorts": [
                {
                    "Host": "localhost",
                    "Port": 5001
                }
            ],
            "UpstreamPathTemplate": "/generatepdf",
            "UpstreamHttpMethod": ["Post"]
        }
    ],
    "GlobalConfiguration": {
        "BaseUrl": "http://localhost:5000"
    }
}

Schritt 4: Startup.cs konfigurieren

Aktualisieren Sie Startup.cs, um die Middleware von Ocelot einzuschließen. Stellen Sie sicher, dass Sie Ihre Anwendung auch zur Verwendung statischer Dateien konfigurieren, da IronPDF möglicherweise Assets vom lokalen Dateisystem laden muss.

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddControllers();
        services.AddOcelot();
    }

    public async void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }

        app.UseRouting();
        app.UseAuthorization();

        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllers();
        });

        await app.UseOcelot();
    }
}
public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddControllers();
        services.AddOcelot();
    }

    public async void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }

        app.UseRouting();
        app.UseAuthorization();

        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllers();
        });

        await app.UseOcelot();
    }
}
$vbLabelText   $csharpLabel

Schritt 5: PDF-Erzeugung mit IronPDF implementieren

Erstellen Sie einen neuen Controller PdfController.cs in Ihrem Controller-Ordner. Dieser Controller wird die PDF-Generierungsanfragen bearbeiten.

using Microsoft.AspNetCore.Mvc;
using IronPdf;

namespace OcelotWithIronPDF.Controllers
{
    [ApiController]
    [Route("api/[controller]")]
    public class PdfController : ControllerBase
    {
        [HttpPost]
        public IActionResult CreatePdfFromHtml([FromBody] string htmlContent)
        {
            var renderer = new ChromePdfRenderer();
            var pdf = renderer.RenderHtmlAsPdf(htmlContent);
            var output = pdf.BinaryData;

            // Return the PDF as a file result
            return File(output, "application/pdf", "generated.pdf");
        }
    }
}
using Microsoft.AspNetCore.Mvc;
using IronPdf;

namespace OcelotWithIronPDF.Controllers
{
    [ApiController]
    [Route("api/[controller]")]
    public class PdfController : ControllerBase
    {
        [HttpPost]
        public IActionResult CreatePdfFromHtml([FromBody] string htmlContent)
        {
            var renderer = new ChromePdfRenderer();
            var pdf = renderer.RenderHtmlAsPdf(htmlContent);
            var output = pdf.BinaryData;

            // Return the PDF as a file result
            return File(output, "application/pdf", "generated.pdf");
        }
    }
}
$vbLabelText   $csharpLabel

Schritt 6: Ausführen der Anwendung

Stellen Sie sicher, dass Ihre Anwendung richtig konfiguriert ist, um auf den in ocelot.json angegebenen Ports zu lauschen. Sie können dies in Properties/launchSettings.json festlegen.

{
  "profiles": {
    "OcelotWithIronPDF": {
      "commandName": "Project",
      "launchBrowser": false,
      "applicationUrl": "https://localhost:5001;http://localhost:5000",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    }
  }
}

Führen Sie nun Ihre Anwendung aus, und Sie sollten in der Lage sein, HTML-Inhalte an http://localhost:5000/generatepdf zu senden und ein PDF als Antwort zu erhalten.

Ocelot .NET (Wie es für Entwickler funktioniert): Abbildung 4

Dieses Beispiel zeigt eine grundlegende Implementierung von Ocelot mit IronPDF innerhalb der gleichen Anwendung. Für Produktionsszenarien sollten Sie in Erwägung ziehen, Ihre Endpunkte zu sichern, Fehlerszenarien zu behandeln und den PDF-Erstellungsprozess gemäß Ihren spezifischen Anforderungen zu optimieren.

Abschluss

Ocelot .NET (Wie es für Entwickler funktioniert): Abbildung 5 - IronPDF-Lizenzierungsseite

Abschließend ist Ocelot eine ausgezeichnete Wahl zur Verwaltung und Weiterleitung von Anfragen in einer Microservices-Architektur. Seine robusten Funktionen wie Routing, Lastverteilung, Middleware-Unterstützung und Authentifizierung machen es zu einem leistungsstarken Werkzeug für jeden .NET-Entwickler. Indem Sie den detaillierten Schritten folgen, können Sie Ocleot effektiv in Ihre .NET-Projekte integrieren, um Ihre API-Gateway-Bedürfnisse zu optimieren.

Zusätzlich, wenn Sie PDF-Generierungsfunktionen benötigen, ist die Integration von IronPDF mit Ocelot unkompliziert und verbessert die Funktionalität Ihrer Anwendung. IronPDF bietet eine kostenlose Testversion und Lizenzen beginnen mit einer kostengünstigen Lösung für Ihre PDF-Bedürfnisse.

Durch die Kombination von Ocelot und IronPDF können Sie eine umfassende und effiziente Microservices-Infrastruktur aufbauen, die sowohl Routing- als auch Dokumentenerstellungsanforderungen erfüllt.

Häufig gestellte Fragen

Wie kann Ocelot die Kommunikation von Microservices in .NET-Anwendungen verbessern?

Ocelot fungiert als API-Gateway und ermöglicht effizientes Routing und Management von HTTP-Anfragen über mehrere Microservices in einer .NET-Anwendung. Es bietet Funktionen wie Routing, Lastverteilung und Authentifizierung, um die Kommunikation zwischen Diensten zu optimieren.

Was sind die Vorteile der Verwendung von Ocelot mit IronPDF?

Die Integration von Ocelot mit IronPDF ermöglicht Entwicklern, Anfragen zur PDF-Erstellung effizient innerhalb einer .NET-Anwendung zu routen. IronPDF gewährleistet, dass HTML-zu-PDF-Konvertierungen originale Layouts und Stile bewahren, was es ideal für die Erstellung webbasierter Inhalte wie Berichte und Rechnungen macht.

Wie konfiguriert man Ocelot für Load Balancing?

Ocelot unterstützt verschiedene Load-Balancing-Strategien, einschließlich Round Robin und Least Connection, die über eine JSON-Datei namens ocelot.json konfiguriert werden können. Dies gewährleistet eine gleichmäßige Verteilung des Datenverkehrs über Microservices.

Welche Rolle spielt Middleware in der Architektur von Ocelot?

Middleware in Ocelot ermöglicht es Entwicklern, benutzerdefinierte Handler einzufügen, um Anfragen und Antworten zu verarbeiten. Dies ist nützlich für Aufgaben wie das Hinzufügen von Headern, Logging oder das Ändern von Antworten, wodurch die Flexibilität und Funktionalität des API-Gateways erhöht wird.

Wie kann man Ocelot in einem .NET-Projekt einrichten?

Um Ocelot in einem .NET-Projekt einzurichten, installieren Sie das Ocelot-Paket über NuGet, konfigurieren Sie es dann, indem Sie Ocelot-Dienste in der Program-Klasse hinzufügen und Routen in einer Konfigurationsdatei definieren. Diese Einrichtung erleichtert das Routing und Management von API-Anfragen.

Welche Strategien verwendet Ocelot zum Handling von Routing?

Ocelot verwendet konfigurationsgesteuertes Routing, welches in einer ocelot.json-Datei angegeben ist, um Anfragen vom API-Gateway an geeignete Downstream-Dienste zu leiten. Es unterstützt Wildcard-Routing und Diensterkennungsmechanismen für flexible Routing-Setups.

Wie gewährleistet Ocelot sicheren API-Zugang?

Ocelot integriert sich mit Authentifizierungsanbietern wie Identity Server und unterstützt JWT- und OAuth2-Schemata, um einen sicheren API-Zugang durch die Steuerung von Benutzerberechtigungen und den Schutz von Endpunkten zu gewährleisten.

Kann Ocelot verwendet werden, um PDF-Erstellungs-Workflows zu optimieren?

Ja, Ocelot kann Anfragen an spezifische Dienste leiten, die der PDF-Erstellung gewidmet sind, wie z. B. solche, die IronPDF verwenden. Dieses Setup optimiert PDF-Workflows, indem es Anfragen effizient bearbeitet und die Dokumenttreue während der Konvertierung erhält.

Wie integriert sich Ocelot mit Diensterkennungsmechanismen?

Ocelot unterstützt die Integration mit Diensterkennungsmechanismen wie Consul und Eureka, was es ermöglicht, Anfragen basierend auf dem aktuellen Zustand der Dienste dynamisch zu leiten. Diese Integration vereinfacht das Management von Diensten in einer Microservices-Architektur.

Jacob Mellor, Chief Technology Officer @ Team Iron
Chief Technology Officer

Jacob Mellor ist Chief Technology Officer bei Iron Software und ein visionärer Ingenieur, der führend in der C# PDF-Technologie ist. Als ursprünglicher Entwickler der Iron Software-Kerncodebasis hat er die Produktarchitektur des Unternehmens seit seiner Gründung gestaltet und zusammen mit CEO Cameron Rimington in ein Unternehmen ...

Weiterlesen