Ocelot .NET (Geliştiriciler için Nasıl Çalışır)
Ocelot API Gateway, bir API geçidi deseni uygulayan .NET kütüphanesidir ve API geçitlerinde yaygın olarak, birden fazla mikro hizmet üzerinden istekleri gerçekleştirmede kullanılır. Müşterilerden gelen istekleri daha sonraki hizmetlere yönlendiren hafif bir API geçidi olarak işlev görür. Bu makale, Ocelot API geçidinin müşteriler ve daha sonraki hizmetler arasında nasıl yer aldığını, kurulumunu, yapılandırmasını, anahtar özelliklerini ve yeteneklerini göstermek için pratik örnekler içeren derinlemesine bir incelemesini sağlar. IronPDF Genel Bakışını ve Ocelot API'sini birlikte keşfedeceğiz.
Ocelot .NET Nedir?

Ocelot, .NET uygulamaları için açık kaynak kodlu bir API geçidi çözümüdür ve birden fazla mikro hizmet üzerinde istek yönlendirmeyi kolaylaştırmak için tasarlanmıştır. Bir ters vekil olarak işlev görerek, istemcilerden gelen HTTP isteklerini yönetir ve bunları ASP.NET Core ortamındaki uygun hizmetlere yönlendirir. ASP.NET Core üzerine geliştirilmiştir ve .NET ekosistemiyle sorunsuz entegre olur ve modern uygulamalar için çok önemli olan sağlam bir özellik seti sunar.
Ocelot'un Temel Özellikleri
Yönlendirme
Ocelot'un işlevselliğinin oynak noktasında, yönlendirme yeteneği yer alır. Gelen istekleri, geliştiriciler tarafından belirtilen yapılandırmaya göre uygun hizmet yollarıyla eşleştiren ve hizmet keşif mekanizmaları ile entegre edilebilen bir özelliktir. Bu, özellikle farklı API sürümleri veya çok sayıda hizmet uç noktasıyla çalışırken kullanışlı olan wildcard yönlendirme desteğini içerir.
Ortam Yazılımı / Vekil İşleyiciler
Ocelot, geliştiricilerin, istekler ve yanıtlar müşteriye veya hizmete ulaşmadan önce işlem yapabilecekleri özel ortam yazılımı veya işleyicileri yerleştirmelerine olanak tanır. Bu, başlıklar eklemek, istekleri günlüğe kaydetmek veya gerektiğinde yanıt yapısını değiştirmek için kullanışlıdır.
Yük Dengeleme
Ocelot kutudan çıktığı haliyle Çember, Az Bağlantı ve hatta mevcut stratejilerden hiçbirine uygun olmayan bir gereksinim varsa özel sağlayıcı gibi çeşitli yük dengeleme stratejilerini destekler. Bu özellik, yükün kullanılabilir hizmetler 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ı güven altına almak kritik önem taşır ve Ocelot, mevcut kimlik doğrulama sağlayıcılarıyla, örneğin Identity Server ile entegrasyon desteği sağlar. JWT ve OAuth2 dahil popüler kimlik doğrulama şemalarını destekler ve kullanıcının hizmetlere erişimi üzerinde ince ayrıntılı kontrol sağlar.
Oran Sınırlandırma ve QoS
Oran sınırlandırma, kötüye kullanımın önlenmesi ve bir kullanıcının belirli bir dönem içinde yapabileceği istek sayısını sınırlayarak hizmetlerin adil kullanımı için esastır. Zaman aşımı ve tekrarları ayarlama gibi Hizmet Kalitesi (QoS) seçenekleri, hizmetlerin, çeşitli ağ koşulları ve yükler altında erişilebilir ve yanıt verir durumda kalmalarını sağlar.
.NET Projesinde Ocelot Ayarlamak
Projenize Ocelot'u entegre etmek için, Ocelot paketini NuGet aracılığıyla yüklemeniz ve Program sınıfında yapılandırmanız gerekir:
dotnet add package Ocelot

Hizmetleri yapılandırın, hizmet konteynerini kurmak için istek oluşturucu ara yazılımı da dahil olmak üzere, Startup.cs veya Program.cs sınıfınızda ayarlayı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ırmak
Ocelot, yönlendirme kurallarını tanımlamak için tipik olarak ocelot.json adlı bir yapılandırma dosyası kullanır. Birden fazla yol yapılandırmasını gösteren daha karmaşık bir örnektir:
{
"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 geçidine yapılan isteklerin, yol ve HTTP yöntemi temelinde farklı alt hizmetlere nasıl yönlendirileceğini belirtir ve JSON dosyası ayar için kullanılır.
Ocelot .NET ile IronPDF Kullanmak

Ocelot ile birlikte bir .NET uygulamasında IronPDF'in HTML-PDF Dönüşümünü birleştirmek, PDF üretim isteklerini belirli bir hizmete yönlendirebileceğiniz veya bunları dahili olarak ele alabileceğiniz güçlü bir çözüm sunar. Burada, Ocelot'u bir API Geçidi olarak ve IronPDF'i HTML'den PDF'ye dönüştürmek için kullanan temel bir .NET Core uygulamasını nasıl kuracağınızı kılavuzluk edeceğim.
IronPDF, HTML'den PDF'ye dönüşümde mükemmeldir, özgün düzenler ve stillerin hassas bir şekilde korunmasını sağlar. Raporlar, faturalar ve belgeler gibi web tabanlı içeriklerden PDF oluşturmak için mükemmeldir. HTML dosyaları, URL'ler ve ham HTML dizeleri için destekle, IronPDF yüksek kaliteli PDF belgelerini kolayca ü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ı Kurun
Öncelikle, yeni bir .NET Core Web API projesi oluşturun. .NET CLI veya Visual Studio kullanarak bunu yapabilirsiniz.
.NET CLI kullanarak:
dotnet new webapi -n OcelotWith IronPDF
cd OcelotWith IronPDF
dotnet new webapi -n OcelotWith IronPDF
cd OcelotWith IronPDF
Adım 2: Gerekli Paketleri Ekleyin
Ocelot ve IronPDF'i yüklemeniz gerekir. Bu paketleri NuGet aracılığıyla 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 ocelot.json adlı bir dosya ekleyin. Bu ayar, Ocelot'un, IronPDF tarafından aynı uygulama içinde ele alınacak belirli bir yola PDF üretim isteklerini yönlendirmesini 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'i Yapılandırın
Ocelot'un yazılım ortam yazılımını dahil etmek için Startup.cs dosyasını güncelleyin. Ayrıca, IronPDF'in yerel dosya sisteminden varlıkları yüklemesi gerekebileceği için uygulamanızı statik dosyaları kullanacak şekilde yapılandırdığınızdan emin olun.
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 Üretimini Uygulayın
Denetleyiciler klasörünüzde yeni bir PdfController.cs denetleyicisi oluşturun. Bu denetleyici, PDF üretim isteklerini ele alacaktır.
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 portları dinleyecek şekilde doğru yapılandırıldığından emin olun. Bunu Properties/launchSettings.json içinde ayarlayabilirsiniz.
{
"profiles": {
"OcelotWith IronPDF": {
"commandName": "Project",
"launchBrowser": false,
"applicationUrl": "https://localhost:5001;http://localhost:5000",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
}
Şimdi uygulamanızı çalıştırın ve http://localhost:5000/generatepdf adresine HTML içeriği gönderip, karşılığında bir PDF alabilmelisiniz.

Bu örnek, aynı uygulamada Ocelot ile IronPDF'in temel bir uygulamasını sergilemektedir. Üretim senaryoları için, uç noktalarınızı güvenceye almayı, hata senaryolarını ele almayı ve PDF üretim sürecini belirli gereksinimlerinize göre optimize etmeyi düşünün.
Sonuç

Sonuç olarak, Ocelot, bir mikro hizmet mimarisinde istekleri yönetmek ve yönlendirmek için mükemmel bir seçimdir. Yönlendirme, yük dengeleme, ortam yazılımı desteği ve kimlik doğrulama gibi güçlü özellikleri, herhangi bir .NET geliştiricisi için güçlü bir araç yapar. Sağlanan detaylı adımları izleyerek API Ağ Geçidi ihtiyaçlarınızı kolaylaştırmak için Ocelot'u .NET projelerinize etkili bir şekilde entegre edebilirsiniz.
Ayrıca, PDF üretim yeteneklerine ihtiyacınız varsa, IronPDF'i Ocelot ile entegre etmek basittir ve uygulamanızın işlevselliğini artırır. IronPDF, PDF ihtiyaçlarınız için uygun maliyetli bir çözümden başlayarak ücretsiz deneme ve lisans seçenekleri sunar.
Ocelot ve IronPDF'i birlikte kullanarak, hem yönlendirme hem de belge üretim gereksinimlerini karşılayan kapsamlı ve verimli bir mikro hizmet altyapısı oluşturabilirsiniz.
Sıkça Sorulan Sorular
Ocelot, .NET uygulamalarında mikroservis iletişimini nasıl iyileştirebilir?
Ocelot, bir API geçidi olarak, bir .NET uygulamasında birden fazla mikroservis arasında HTTP isteklerinin verimli bir şekilde yönlendirilmesini ve yönetilmesini kolaylaştırır. Yönlendirme, yük dengeleme ve kimlik doğrulama gibi özellikler sunarak hizmetler arası iletişimi düzgün hale getirir.
IronPDF ile birlikte Ocelot'u kullanmanın faydaları nelerdir?
Ocelot'u IronPDF ile entegre etmek, .NET uygulaması içinde PDF üretim taleplerini verimli bir şekilde yönlendirmesini sağlar. IronPDF, HTML'den PDF'ye dönüşümlerin orijinal düzenleri ve stilleri koruduğundan emin olur, raporlar ve faturalar gibi web tabanlı içerik oluşturmak için idealdir.
Ocelot yük dengelemesi için nasıl yapılandırılır?
Ocelot, tipik olarak ocelot.json adında bir JSON dosyası aracılığıyla yapılandırılabilen, Trafiğin mikro servisler arasında eşit dağılımını sağlamak için çevrimsel ve en az bağlantı gibi çeşitli yük dengeleme stratejilerini destekler.
Ara katman yazılımlar Ocelot'un mimarisinde hangi rolü oynar?
Ocelot'ta ara katman, geliştiricilerin özellikle istek ve yanıtları işlemek için özel işlemler eklemelerine olanak tanır. Bu, başlıklar eklemek, kaydedici tutmak veya yanıtları değiştirmek gibi görevler için yararlı olup, API geçidi esnekliğini ve işlevselliğini geliştirir.
.NET projesinde Ocelot'u nasıl kurabilirsiniz?
.NET projesinde Ocelot'u kurmak için, Ocelot paketini NuGet üzerinden yükleyin, ardından Program sınıfında Ocelot hizmetlerini ekleyerek ve bir yapılandırma dosyasında yönlendirme kurallarını tanımlayarak yapılandırın. Bu kurulum, API isteklerinin yönlendirilmesi ve yönetilmesi için kolaylık sağlar.
Ocelot, yönlendirmeyi ele almak için hangi stratejileri kullanır?
Ocelot, API geçidinden uygun alt akış hizmetlerine istekleri yönlendirmek için bir ocelot.json dosyasında belirtilmiş yapılandırma odaklı yönlendirme kullanır. Esnek yönlendirme kurulumları için joker karakter yönlendirmesi ve servis keşif mekanizmalarını destekler.
Ocelot, güvenli API erişimini nasıl sağlar?
Ocelot, Kimlik Sunucusu gibi kimlik doğrulama sağlayıcıları ile entegre olur ve kullanıcı izinlerini kontrol ederek ve uç noktaları koruma altına alarak güvenli API erişimi sağlamak için JWT ve OAuth2 düzenlerini destekler.
Ocelot, PDF oluşturma iş akışlarını optimize etmek için kullanılabilir mi?
Evet, Ocelot, IronPDF kullananlar gibi PDF oluşturma işlemleri için özel hizmetlere istekleri yönlendirerek optimize edebilir. Bu kurulum, istekleri verimli bir şekilde yöneterek ve dönüştürme sırasında belge sadakatini koruyarak PDF iş akışlarını optimize eder.
Ocelot, servis keşif mekanizmaları ile nasıl entegre olur?
Ocelot, Consul ve Eureka gibi servis keşif mekanizmaları ile entegrasyonu destekler, bu da hizmetlerin mevcut durumuna göre istekleri dinamik olarak yönlendirmesini sağlar. Bu entegrasyon, mikro hizmet mimarisinde hizmetleri yönetmeyi basitleştirir.




