Przejdź do treści stopki
POMOC .NET

Ocelot .NET (jak to działa dla programistów)

Ocelot API Gateway to biblioteka .NET, która implementuje wzorzec bramy API powszechnie stosowany w bramach API do obsługi żądań w wielu mikrousługach. Działa jako lekka brama API, kierując żądania od klientów do usług niższego szczebla. W tym artykule szczegółowo omówiono, w jaki sposób brama API Ocelot działa jako pośrednik między klientami a usługami niższego szczebla, przedstawiając jej instalację, konfigurację, kluczowe funkcje oraz praktyczne przykłady ilustrujące jej możliwości. Omówimy również przegląd IronPDF oraz API Ocelot łącznie.

Czym jest Ocelot .NET?

Ocelot .NET (Jak to działa dla programistów): Rysunek 1 – Strona główna Ocelot .NET

Ocelot to rozwiązanie typu open source w postaci bramy API dla aplikacji .NET, zaprojektowane w celu ułatwienia routingu żądań między wieloma mikrousługami. Działa jako odwrotny serwer proxy, zarządzając żądaniami HTTP od klientów i kierując je do odpowiednich usług w środowisku ASP.NET Core. Ocelot, opracowany w oparciu o ASP.NET Core, płynnie integruje się z ekosystemem .NET, oferując solidny zestaw funkcji, które są kluczowe dla nowoczesnych aplikacji.

Najważniejsze cechy Ocelot

Routing

Podstawą funkcjonalności Ocelot jest jego zdolność do routingu. Dopasowuje przychodzące żądania do odpowiednich tras usługowych w oparciu o konfigurację określoną przez programistów i może być zintegrowany z mechanizmami wykrywania usług. Obejmuje to obsługę routingu z użyciem symboli wieloznacznych, co jest szczególnie przydatne w przypadku różnych wersji API lub licznych punktów końcowych usług.

Oprogramowanie pośredniczące / Delegowanie procedur obsługi

Ocelot pozwala programistom na wstrzykiwanie niestandardowego oprogramowania pośredniczącego lub procedur obsługi, które mogą przetwarzać żądania i odpowiedzi, zanim dotrą one do klienta lub usługi. Jest to przydatne do dodawania nagłówków, rejestrowania żądań, a nawet modyfikowania struktury odpowiedzi w razie potrzeby.

Równoważenie obciążenia

Ocelot obsługuje wiele gotowych strategii równoważenia obciążenia, takich jak Round Robin, Least Connection oraz dostawca niestandardowy, jeśli żadna z predefiniowanych strategii nie spełnia wymagań. Ta funkcja zapewnia równomierny rozkład obciążenia między dostępne usługi, zwiększając ogólną odporność i wydajność aplikacji.

Uwierzytelnianie i autoryzacja

Zabezpieczenie punktów końcowych API ma kluczowe znaczenie, a Ocelot zapewnia obsługę integracji z istniejącymi dostawcami uwierzytelniania, takimi jak Identity Server. Obsługuje popularne schematy uwierzytelniania, w tym JWT i OAuth2, oraz umożliwia precyzyjną kontrolę dostępu użytkowników do usług.

Ograniczanie przepustowości i jakość usług (QoS)

Ograniczanie szybkości jest niezbędne, aby zapobiegać nadużyciom i zapewnić uczciwe korzystanie z usług poprzez ograniczenie liczby żądań, które użytkownik może wysłać w danym okresie. Opcje jakości usług (QoS), takie jak ustawianie limitów czasu i ponownych prób, zapewniają dostępność i responsywność usług w różnych warunkach sieciowych i przy różnym obciążeniu.

Konfiguracja Ocelot w projekcie .NET

Aby zintegrować Ocelot z projektem, należy zainstalować pakiet Ocelot za pośrednictwem NuGet i skonfigurować go w klasie Program:

dotnet add package Ocelot

Ocelot .NET (Jak to działa dla programistów): Rysunek 2 — Zainstaluj Ocelot .NET za pomocą menedżera pakietów NuGet

Skonfiguruj usługi, w tym oprogramowanie Builder do tworzenia żądań, w klasie Startup.cs lub Program.cs, aby skonfigurować kontener usług:

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();
}
Public Sub ConfigureServices(ByVal services As IServiceCollection)
	' Add Ocelot services to the service collection
	services.AddOcelot()
End Sub

Public Async Sub Configure(ByVal app As IApplicationBuilder, ByVal env As IWebHostEnvironment)
	' Use the developer exception page when in development mode
	If env.IsDevelopment() Then
		app.UseDeveloperExceptionPage()
	End If

	' Start Ocelot middleware
	Await app.UseOcelot()
End Sub
$vbLabelText   $csharpLabel

Konfiguracja tras w Ocelot

Ocelot używa pliku konfiguracyjnego, zazwyczaj ocelot.json, do definiowania reguł routingu. Oto bardziej złożony przykład ilustrujący konfiguracje wielu tras:

{
    "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"
    }
}

Ta konfiguracja określa, w jaki sposób żądania kierowane do bramy API są przekierowywane do różnych usług niższego szczebla w oparciu o ścieżkę i metodę HTTP, przy użyciu pliku JSON do konfiguracji.

Korzystanie z IronPDF z Ocelot .NET

Ocelot .NET (Jak to działa dla programistów): Rysunek 3 – Strona główna IronPDF

Połączenie Ocelot z funkcją konwersji HTML na PDF w IronPDF w aplikacji .NET zapewnia potężne rozwiązanie, w którym można kierować żądania generowania plików PDF do określonej usługi lub obsługiwać je wewnętrznie. W tym miejscu przeprowadzę Cię przez proces konfiguracji podstawowej aplikacji .NET Core, która wykorzystuje Ocelot jako bramę API oraz IronPDF do generowania plików PDF z HTML.

IronPDF wyróżnia się w konwersji HTML do PDF, zapewniając precyzyjne zachowanie oryginalnych układów i stylów. Idealnie nadaje się do tworzenia plików PDF z treści internetowych, takich jak raporty, faktury i dokumentacja. Dzięki obsłudze plików HTML, adresów URL i surowych ciągów znaków HTML, IronPDF z łatwością tworzy wysokiej jakości dokumenty 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");
    }
}
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");
    }
}
Imports IronPdf

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim renderer = New ChromePdfRenderer()

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

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

		' Convert URL to PDF
		Dim url = "http://ironpdf.com" ' Specify the URL
		Dim pdfFromUrl = renderer.RenderUrlAsPdf(url)
		pdfFromUrl.SaveAs("URLToPDF.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel

Krok 1: Skonfiguruj aplikację internetową .NET Core

Najpierw utwórz nowy projekt .NET Core Web API. Można to zrobić za pomocą interfejsu CLI platformy .NET lub programu Visual Studio.

Korzystanie z interfejsu CLI platformy .NET:

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

Krok 2: Dodaj niezbędne pakiety

Należy zainstalować Ocelot i IronPDF. Pakiety te można dodać za pośrednictwem NuGet.

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

Krok 3: Skonfiguruj Ocelot

Dodaj plik ocelot.json do katalogu głównego projektu z następującą treścią, aby skonfigurować routing Ocelot. Ta konfiguracja zakłada, że chcesz, aby Ocelot kierował żądania generowania plików PDF do określonej ścieżki, która będzie obsługiwana przez IronPDF w ramach tej samej aplikacji.

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

Krok 4: Skonfiguruj plik Startup.cs

Zaktualizuj plik Startup.cs, aby uwzględnić oprogramowanie pośredniczące Ocelot. Upewnij się również, że skonfigurowałeś swoją aplikację do korzystania z plików statycznych, ponieważ IronPDF może wymagać ładowania zasobów z lokalnego systemu plików.

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();
    }
}
Public Class Startup
	Public Sub ConfigureServices(ByVal services As IServiceCollection)
		services.AddControllers()
		services.AddOcelot()
	End Sub

	Public Async Sub Configure(ByVal app As IApplicationBuilder, ByVal env As IWebHostEnvironment)
		If env.IsDevelopment() Then
			app.UseDeveloperExceptionPage()
		End If

		app.UseRouting()
		app.UseAuthorization()

		app.UseEndpoints(Sub(endpoints)
			endpoints.MapControllers()
		End Sub)

		Await app.UseOcelot()
	End Sub
End Class
$vbLabelText   $csharpLabel

Krok 5: Wdrożenie generowania plików PDF za pomocą IronPDF

Utwórz nowy kontroler PdfController.cs w folderze Controllers. Ten kontroler będzie obsługiwał żądania generowania plików 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");
        }
    }
}
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");
        }
    }
}
Imports Microsoft.AspNetCore.Mvc
Imports IronPdf

Namespace OcelotWithIronPdf.Controllers

    <ApiController>
    <Route("api/[controller]")>
    Public Class PdfController
        Inherits ControllerBase

        <HttpPost>
        Public Function CreatePdfFromHtml(<FromBody> htmlContent As String) As IActionResult
            Dim renderer = New ChromePdfRenderer()
            Dim pdf = renderer.RenderHtmlAsPdf(htmlContent)
            Dim output = pdf.BinaryData

            ' Return the PDF as a file result
            Return File(output, "application/pdf", "generated.pdf")
        End Function

    End Class

End Namespace
$vbLabelText   $csharpLabel

Krok 6: Uruchom aplikację

Upewnij się, że Twoja aplikacja jest poprawnie skonfigurowana do nasłuchiwania na portach określonych w pliku ocelot.json. Można to ustawić w pliku Properties/launchSettings.json.

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

Teraz uruchom aplikację, a powinieneś móc wysłać treść HTML do http://localhost:5000/generatepdf i otrzymać w odpowiedzi plik PDF.

Ocelot .NET (Jak to działa dla programistów): Rysunek 4

Ten przykład przedstawia podstawową implementację Ocelot z IronPDF w tej samej aplikacji. W scenariuszach produkcyjnych należy rozważyć zabezpieczenie punktów końcowych, obsługę scenariuszy błędów oraz optymalizację procesu generowania plików PDF w oparciu o konkretne wymagania.

Wnioski

Ocelot .NET (Jak to działa dla programistów): Rysunek 5 – Strona licencyjna IronPDF

Podsumowując, Ocelot to doskonały wybór do zarządzania i kierowania żądaniami w architekturze mikrousług. Jego solidne funkcje, takie jak routing, równoważenie obciążenia, obsługa oprogramowania pośredniczącego i uwierzytelnianie, sprawiają, że jest to potężne narzędzie dla każdego programisty .NET. Postępując zgodnie z podanymi szczegółowymi instrukcjami, można skutecznie zintegrować Ocleot z projektami .NET w celu usprawnienia obsługi API Gateway.

Ponadto, jeśli potrzebujesz funkcji generowania plików PDF, integracja IronPDF z Ocelot jest prosta i zwiększa funkcjonalność Twojej aplikacji. IronPDF oferuje bezpłatną wersję próbną, a ceny licencji zaczynają się od opłacalnego rozwiązania dostosowanego do Twoich potrzeb związanych z plikami PDF.

Wykorzystując razem Ocelot i IronPDF, można zbudować kompleksową i wydajną infrastrukturę mikrousług, która spełnia zarówno wymagania dotyczące routingu, jak i generowania dokumentów.

Często Zadawane Pytania

W jaki sposób Ocelot może usprawnić komunikację między mikrousługami w aplikacjach .NET?

Ocelot pełni rolę bramy API, ułatwiając wydajne kierowanie i zarządzanie żądaniami HTTP w wielu mikrousługach w aplikacji .NET. Zapewnia funkcje takie jak routing, równoważenie obciążenia i uwierzytelnianie w celu usprawnienia komunikacji między usługami.

Jakie są zalety korzystania z Ocelot w połączeniu z IronPDF?

Integracja Ocelot z IronPDF pozwala programistom na efektywne kierowanie żądań generowania plików PDF w ramach aplikacji .NET. IronPDF zapewnia, że konwersje HTML na PDF zachowują oryginalne układy i style, co czyni go idealnym rozwiązaniem do generowania treści internetowych, takich jak raporty i faktury.

Jak skonfigurować Ocelot do równoważenia obciążenia?

Ocelot obsługuje różne strategie równoważenia obciążenia, w tym Round Robin i Least Connection, które można skonfigurować za pomocą pliku JSON, zazwyczaj nazwanego ocelot.json. Zapewnia to równomierny rozkład ruchu między mikrousługami.

Jaką rolę odgrywa oprogramowanie pośredniczące w architekturze Ocelot?

Oprogramowanie pośredniczące w Ocelot pozwala programistom na wstawianie niestandardowych procedur obsługi w celu przetwarzania żądań i odpowiedzi. Jest to przydatne w przypadku zadań takich jak dodawanie nagłówków, rejestrowanie lub modyfikowanie odpowiedzi, zwiększając elastyczność i funkcjonalność bramy API.

Jak skonfigurować Ocelot w projekcie .NET?

Aby skonfigurować Ocelot w projekcie .NET, zainstaluj pakiet Ocelot za pośrednictwem NuGet, a następnie skonfiguruj go, dodając usługi Ocelot w klasie Program i definiując trasy w pliku konfiguracyjnym. Taka konfiguracja ułatwia routing i zarządzanie żądaniami API.

Jakie strategie stosuje Ocelot w zakresie routingu?

Ocelot wykorzystuje routing oparty na konfiguracji, określony w pliku ocelot.json, do kierowania żądań z bramy API do odpowiednich usług niższego szczebla. Obsługuje routing z użyciem symboli wieloznacznych oraz mechanizmy wykrywania usług, co pozwala na elastyczne konfiguracje routingu.

W jaki sposób Ocelot zapewnia bezpieczny dostęp do API?

Ocelot integruje się z dostawcami uwierzytelniania, takimi jak Identity Server, i obsługuje schematy JWT oraz OAuth2, umożliwiając bezpieczny dostęp do API poprzez kontrolę uprawnień użytkowników i zapewnienie ochrony punktów końcowych.

Czy Ocelot może być wykorzystywany do optymalizacji procesów generowania plików PDF?

Tak, Ocelot może kierować żądania do konkretnych usług przeznaczonych do generowania plików PDF, takich jak te wykorzystujące IronPDF. Taka konfiguracja optymalizuje przepływ pracy z plikami PDF poprzez wydajną obsługę żądań i zachowanie wierności dokumentów podczas konwersji.

W jaki sposób Ocelot integruje się z mechanizmami wykrywania usług?

Ocelot obsługuje integrację z mechanizmami wykrywania usług, takimi jak Consul i Eureka, co pozwala mu dynamicznie kierować żądania w oparciu o aktualny stan usług. Integracja ta upraszcza zarządzanie usługami w architekturze mikrousług.

Jacob Mellor, Dyrektor Technologiczny @ Team Iron
Dyrektor ds. technologii

Jacob Mellor jest Chief Technology Officer w Iron Software i wizjonerskim inżynierem, pionierem technologii C# PDF. Jako pierwotny deweloper głównej bazy kodowej Iron Software, kształtuje architekturę produktów firmy od jej początku, przekształcając ją wspólnie z CEO Cameron Rimington w firmę liczą...

Czytaj więcej

Zespol wsparcia Iron

Jestesmy online 24 godziny, 5 dni w tygodniu.
Czat
Email
Zadzwon do mnie