Ocelot .NET (Geliştiriciler için Nasıl Çalışır)
Ocelot API Gateway, genellikle API ağ geçitlerinde kullanılan API gateway desenini uygulayan bir .NET kütüphanesidir ve birden fazla mikro hizmet üzerinden gelen istekleri yönetir. Müşterilerden gelen istekleri aşağı akış servislerine yönlendiren hafif bir API gateway gibi davranır. Bu makale, Ocelot API gateway'in müşteriler ve aşağı akış servisleri arasında nasıl konumlandığını derinlemesine ele almakta ve kurulumu, yapılandırması, temel özellikleri, ve yeteneklerini göstermek için pratik örnekleri içermektedir. IronPDF Genel Bakış ve Ocelot API'nin birleştirilmiş haline de değineceğiz.
Ocelot .NET Nedir?

Ocelot, birden fazla mikro hizmet üzerinden gelen isteklerin yönlendirilmesini kolaylaştırmak için tasarlanmış açık kaynaklı bir API gateway çözümüdür. Müşterilerden gelen HTTP isteklerini yönlendiren bir ters proxy gibi davranır ve ASP.NET Core ortamında uygun hizmetlere yönlendirir. ASP.NET Core üzerinde geliştirilen Ocelot, .NET ekosistemiyle sorunsuz bir şekilde entegre olur ve modern uygulamalar için kritik özellikler sunar.
Ocelot'un Temel Özellikleri
Yönlendirme
Ocelot'un işlevselliğinin merkezinde yer alan yönlendirme yeteneğidir. Geliştiriciler tarafından belirlenen yapılandırmaya dayanarak gelen istekleri uygun hizmet yollarına eşleştirir ve hizmet keşif mekanizmaları ile entegre edilebilir. Bu, özellikle değişen API sürümleri veya çok sayıda hizmet uç noktası ile uğraşırken yararlı olan joker yönlendirme desteğini içerir.
Orta katman / Yetkilendirme İşleyicileri
Ocelot, geliştiricilerin özelleştirilmiş orta katman veya işleyiciler ekleyerek, isteklerin ve yanıtların müşteriye veya hizmete ulaşmadan önce işlenmesini sağlamalarına imkan tanır. Bu, başlık eklemek, istekleri kaydetmek veya gerekirse yanıt yapısını değiştirmek için kullanışlıdır.
Yük Dengeleme
Ocelot, kutudan çıktığı haliyle, Round Robin, En Az Bağlantı ve önceden tanımlanmış stratejilerden uygun olmayanlar için bir özel sağlayıcı gibi çeşitli yük dengeleme stratejilerini destekler. Bu özellik, yükün mevcut servisler arasında eşit şekilde dağıtılmasını sağlayarak uygulamanın genel dayanıklılığını ve verimliliğini artırır.
Kimlik Doğrulama ve Yetkilendirme
API uç noktalarının güvenliğini sağlamak önemlidir ve Ocelot, Kimlik Sunucusu gibi mevcut kimlik doğrulama sağlayıcıları ile entegrasyonu destekler. JWT ve OAuth2 gibi popüler kimlik doğrulama şemalarını desteklemektedir; kullanıcıların servislere erişimi üzerinde ince ayar kontrolü sağlar.
Oran Sınırlaması ve Hizmet Kalitesi
Kullanıcının belirli bir süre içinde yapabileceği isteklerin sayısını sınırlandırarak hizmetlerin kötüye kullanılmasını önlemek ve adil kullanımını sağlamak için oran sınırlaması esastır. Zaman aşımı ve tekrar deneme gibi Hizmet Kalitesi (QoS) seçenekleri, çeşitli ağ koşulları ve yükler altında hizmetlerin kullanılabilir ve duyarlı kalmasını sağlar.
.NET Projesine Ocelot Kurulumu
Ocelot'u projenize entegre etmek için, NuGet üzerinden Ocelot paketini yüklemeniz ve Program sınıfınıza yapılandırmanız gerekir:
dotnet add package Ocelot

Hizmetleri yapılandırın, servis konteynerini ayarlamak için istek oluşturucu ara yazılımı da dahil olmak üzere, Startup.cs veya Program.cs sınıfınızda yapılandırın:
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
Ocelot'ta Rotaları Yapılandırma
Ocelot, yönlendirme kurallarını tanımlamak için genellikle ocelot.json dosyası kullanır. İşte birden fazla rota yapılandırmasını gösteren daha karmaşık bir örnek:
{
"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"
}
}
Bu yapılandırma, API gateway'e gelen isteklerin JSON dosyası kullanılarak yapılandırma temelli aşağı akış hizmetlerine nasıl yönlendirileceğini belirler.
IronPDF ile Ocelot .NET Kullanımı

.NET uygulaması içinde Ocelot'u IronPDF'in HTML'den PDF'e Dönüştürme işleviyle birleştirmek, PDF oluşturma isteklerini belirli bir servise yönlendirmenizi veya yerel olarak işlemeyi sağlayan güçlü bir çözüm sunar. Burada, bir API Gateway olarak Ocelot kullanan ve HTML'den PDF oluşturan IronPDF'i kullanan temel bir .NET Core uygulaması kurulumunu anlatacağım.
HTML'den PDF'ye dönüştürmede IronPDF, özgün düzenlerin ve tarzların hassas korunmasını sağlamakta üstünlük sağlar. Web tabanlı içeriklerden, örneğin raporlar, faturalar ve belgeler gibi PDF'ler oluşturmak için mükemmeldir. HTML dosyaları, URL'ler ve ham HTML dizeleri desteği ile IronPDF kolaylıkla yüksek kaliteli PDF belgeler üretir.
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
Adım 1: .NET Core Web Uygulamasını Kurma
Öncelikle, yeni bir .NET Core Web API projesi oluşturun. .NET CLI veya Visual Studio kullanarak bunu yapabilirsiniz.
.NET CLI kullanılarak:
dotnet new webapi -n OcelotWithIronPDF
cd OcelotWithIronPDF
dotnet new webapi -n OcelotWithIronPDF
cd OcelotWithIronPDF
Adım 2: Gerekli Paketleri Ekleyin
Ocelot ve IronPDF'i yüklemeniz gerekiyor. Bu paketleri NuGet üzerinden ekleyebilirsiniz.
dotnet add package Ocelot
dotnet add package IronPdf
dotnet add package Ocelot
dotnet add package IronPdf
Adım 3: Ocelot'u Yapılandırın
Ocelot'un yönlendirmesini yapılandırmak için projenizin köküne şu içeriğe sahip bir ocelot.json dosyası ekleyin. Bu kurulum, Ocelot'un PDF oluşturma isteklerini aynı uygulama içerisinde IronPDF'e yönlendirmek istediğinizi varsayar.
{
"ReRoutes": [
{
"DownstreamPathTemplate": "/api/pdf",
"DownstreamScheme": "https",
"DownstreamHostAndPorts": [
{
"Host": "localhost",
"Port": 5001
}
],
"UpstreamPathTemplate": "/generatepdf",
"UpstreamHttpMethod": ["Post"]
}
],
"GlobalConfiguration": {
"BaseUrl": "http://localhost:5000"
}
}
Adım 4: Startup.cs'yi Yapılandırın
Startup.cs dosyanızda Ocelot'un ara yazılımını ekleyecek şekilde güncelleyin. IronPDF'in yerel dosya sisteminden varlıkları yüklemesi gerekebileceği için, statik dosyaları kullanmak amacıyla uygulamanızı da yapılandırın.
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
Adım 5: IronPDF ile PDF Oluşturmayı Gerçekleştirin
Kontrolörler klasörünüzde yeni bir PdfController.cs kontrolörü oluşturun. Bu kontrolör PDF oluşturma isteklerini işleyecektir.
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
Adım 6: Uygulamayı Çalıştırın
Uygulamanızın, ocelot.json dosyasında belirtilen portlarda dinlemek üzere doğru bir şekilde yapılandırıldığından emin olun. Bunu Properties/launchSettings.json dosyasında ayarlayabilirsiniz.
{
"profiles": {
"OcelotWithIronPDF": {
"commandName": "Project",
"launchBrowser": false,
"applicationUrl": "https://localhost:5001;http://localhost:5000",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
}
Şimdi uygulamanızı çalıştırın, HTML içeriğini http://localhost:5000/generatepdf'e gönderebilmelisiniz ve yanıt olarak bir PDF alabilirsiniz.

Bu örnek, aynı uygulama içinde Ocelot ve IronPDF'in temel bir uygulamasını sergilemektedir. Üretim senaryoları için, uç noktalarınızı güvence altına almayı, hata senaryolarını ele almayı ve PDF oluşturma sürecini, özel gereksinimlerinize göre optimize etmeyi değerlendirin.
Sonuç

Sonuç olarak, Ocelot, mikro hizmet mimarisine sahip projelerde isteklerin yönetimi ve yönlendirilmesi için mükemmel bir seçimdir. Routing, yük dengeleme, middleware desteği ve kimlik doğrulama gibi güçlü özellikleri onu bir .NET geliştiricisi için güçlü bir araç haline getirir. Verilen detaylı adımları izleyerek, Ocelot'u .NET projelerinize etkili bir şekilde entegre edebilir ve API Gateway ihtiyaçlarınızı karşılayabilirsiniz.
Ayrıca, PDF oluşturma yeteneklerine ihtiyaçınız varsa, IronPDF'i Ocelot ile entegre etmek basittir ve uygulamanızın işlevselliğini arttırır. IronPDF bir ücretsiz deneme sunar ve PDF ihtiyaçlarınız için maliyet etkin bir çözümden başlar.
Ocelot ve IronPDF'i bir arada kullanarak, hem yönlendirme hem de belge oluşturma gereksinimlerini karşılayan kapsamlı ve verimli bir mikro hizmet altyapısı inşa edebilirsiniz.
Sıkça Sorulan Sorular
Ocelot, .NET uygulamalarında mikro hizmet iletişimini nasıl iyileştirebilir?
Bir API geçidi olarak işlev gören Ocelot, birden fazla mikro hizmet arasında HTTP isteklerinin verimli yönlendirilmesini ve yönetilmesini kolaylaştırır. İletişimi düzene koymak için yönlendirme, yük dengeleme ve kimlik doğrulama gibi özellikler sunar.
Ocelot'u IronPDF ile kullanmanın faydaları nelerdir?
Ocelot'un IronPDF ile entegrasyonu, .NET uygulamasındaki PDF oluşturma isteklerini verimli bir şekilde yönlendirmenizi sağlar. IronPDF, HTML'den PDF'ye dönüşümlerde orijinal düzenlerin ve stillerin korunmasını sağlar, bu da web tabanlı içeriklerin raporlar ve faturalar gibi oluşturulması için idealdir.
Ocelot'u yük dengeleme için nasıl yapılandırırsınız?
Ocelot, Round Robin ve En Az Bağlantı gibi çeşitli yük dengeleme stratejilerini destekler ve genellikle ocelot.json adında bir JSON dosyası aracılığıyla yapılandırılır. Bu, trafiğin mikro hizmetler arasında eşit şekilde dağıtılmasını sağlar.
Ara yazılım, Ocelot'un mimarisinde ne rol oynar?
Ocelot'taki ara yazılım, geliştiricilerin istekleri ve yanıtları işlemek için özel kullanıcılar eklemesine izin verir. Bu, başlık ekleme, günlük kaydı veya yanıtları değiştirme gibi görevler için kullanılır ve API geçidinin esnekliğini ve işlevselliğini artırır.
Bir .NET projesinde Ocelot'u nasıl kurabilirsiniz?
Bir .NET projesinde Ocelot'u kurmak için, NuGet aracılığıyla Ocelot paketini yükleyin, ardından Program sınıfında Ocelot servislerini ekleyerek ve bir yapılandırma dosyasında yönlendirmeleri tanımlayarak yapılandırın. Bu kurulum, API isteklerinin yönlendirilmesini ve yönetilmesini kolaylaştırır.
Ocelot, yönlendirmeyi yönetmek için hangi stratejileri kullanır?
Ocelot, bir API geçidinden uygun hizmetlere isteği yönlendirmek için ocelot.json dosyasında belirtilen yapılandırma odaklı yönlendirme kullanır. Esnek yönlendirme kurulumları için genel karakter yönlendirme ve hizmet keşfi mekanizmalarını destekler.
Ocelot güvenli API erişimini nasıl sağlar?
Ocelot, Identity Server gibi kimlik doğrulama sağlayıcılarıyla entegre olur ve JWT ve OAuth2 şemalarını destekler, kullanıcı izinlerini kontrol ederek ve uç noktayı koruyarak güvenli API erişimi sağlar.
Ocelot PDF oluşturma iş akışlarını optimize etmek için kullanılabilir mi?
Evet, Ocelot, IronPDF kullananlar gibi PDF oluşturma işlerine adanmış özel hizmetlere istekleri yönlendirmek için kullanılabilir. Bu kurulum, istekleri verimli bir şekilde işleyerek ve dönüşüm sırasında belge sadakatini koruyarak PDF iş akışlarını optimize eder.
Ocelot, servis keşfi mekanizmaları ile nasıl entegre olur?
Ocelot, Consul ve Eureka gibi servis keşfi mekanizmalarıyla entegrasyonu destekler, bu da hizmetlerin mevcut durumuna göre dinamik olarak istekleri yönlendirmesini sağlar. Bu entegrasyon, bir mikro hizmetler mimarisinde hizmetlerin yönetimini basitleştirir.




