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

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

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

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

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

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 .NET (Geliştiriciler İçin Nasıl Çalışır): Şekil 3 - IronPDF ana sayfası

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

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
SHELL

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
SHELL

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

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

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.

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

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ç

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

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.

Jacob Mellor, Teknoloji Direktörü @ Team Iron
Teknoloji Direktörü

Jacob Mellor, Iron Software'de Baş Teknoloji Yöneticisidir ve C# PDF teknolojisinde öncü bir mühendisdir. Iron Software'ın ana kod tabanının ilk geliştiricisi olarak, CEO Cameron Rimington ile birlikte şirketin ürün mimarisini 50'den fazla kişilik bir şirkete dönüştürmüştür ...

Daha Fazla Oku

Iron Destek Ekibi

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