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 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

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
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

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
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
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
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
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
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.

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

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.




