Altbilgi içeriğine atla
.NET YARDıM

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 .NET (Geliştiriciler İçin Nasıl Çalışır): Şekil 1 - Ocelot .NET anasayfası

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

Ocelot .NET (Geliştiriciler İçin Nasıl Çalışır): Şekil 2 - NuGet Paket Yöneticisi üzerinden Ocelot .NET'i yükleyin

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
$vbLabelText   $csharpLabel

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ı

Ocelot .NET (Geliştiriciler İçin Nasıl Çalışır): Şekil 3 - IronPDF anasayfası

.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
$vbLabelText   $csharpLabel

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
SHELL

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
SHELL

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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.

Ocelot .NET (Geliştiriciler İçin Nasıl Çalışır): Şekil 4

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ç

Ocelot .NET (Geliştiriciler İçin Nasıl Çalışır): Şekil 5 - IronPDF lisanslama sayfası

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.

Jacob Mellor, Teknoloji Direktörü @ Team Iron
Chief Technology Officer

Jacob Mellor, Iron Software'in Teknoloji Müdürü ve C# PDF teknolojisinin öncüsü olan vizyoner bir mühendis. Iron Software’in temel kod tabanının ilk geliştiricisi olarak, şirketin ürün mimarisini kuruluşundan bu yana şekillendirdi ve CEO Cameron Rimington ile birlikte NASA, Tesla ve ...

Daha Fazlasını Oku

Iron Destek Ekibi

Haftanın 5 günü, 24 saat çevrimiçiyiz.
Sohbet
E-posta
Beni Ara