푸터 콘텐츠로 바로가기
.NET 도움말

Ocelot .NET (개발자에게 어떻게 작동하는가)

Ocelot API Gateway는 다중 마이크로서비스에 걸쳐 요청을 처리하는 데 일반적으로 사용되는 API 게이트웨이 패턴을 구현하는 .NET 라이브러리입니다. 이는 가벼운 API 게이트웨이로 작동하여 클라이언트의 요청을 다운스트림 서비스로 라우팅합니다. 이 문서는 설치, 구성, 주요 기능, 능력을 입증하기 위한 실용적인 예제를 다루어 클라이언트와 다운스트림 서비스 간에 위치한 Ocelot API 게이트웨이를 깊게 이해합니다. 우리는 또한 IronPDF 개요와 Ocelot API를 결합하여 탐색할 것입니다.

Ocelot .NET이란?

Ocelot .NET (개발자를 위한 작동 방식): 그림 1 - Ocelot .NET 홈페이지

Ocelot은 .NET 애플리케이션을 위한 오픈 소스 API 게이트웨이 솔루션으로, 여러 마이크로서비스 간 요청의 라우팅을 쉽게 하기 위해 설계되었습니다. 이는 클라이언트로부터의 HTTP 요청을 관리하고 ASP.NET Core 환경에서 적절한 서비스로 라우팅하는 역방향 프록시 역할을 합니다. ASP.NET Core에서 개발된 Ocelot은 .NET 생태계와 원활하게 통합되어, 현대 애플리케이션에 필수적인 강력한 기능 세트를 제공합니다.

Ocelot의 주요 기능

라우팅

Ocelot의 기능의 핵심은 라우팅 기능입니다. Ocelot은 개발자가 지정한 구성에 따라 들어오는 요청을 적절한 서비스 라우트에 연결하며, 서비스 검색 메커니즘과 통합할 수 있습니다. 이는 와일드카드 라우팅 지원을 포함하며, 이는 다양한 API 버전이나 다수의 서비스 엔드포인트를 처리할 때 특히 유용합니다.

미들웨어 / 위임 핸들러

Ocelot은 개발자가 클라이언트 또는 서비스에 도달하기 전에 요청과 응답을 처리할 수 있는 맞춤형 미들웨어 또는 핸들러를 주입할 수 있도록 합니다. 이는 헤더 추가, 요청 로깅, 또는 응답 구조 수정 등 필요한 대로 유용합니다.

로드 밸런싱

Ocelot은 상자 없이 여러 로드 밸런싱 전략을 지원하며, Round Robin, Least Connection, 미리 정의된 전략 중 요구 사항에 맞지 않는 경우 사용자 정의 제공자를 사용할 수 있습니다. 이 기능은 이용 가능한 서비스 간에 부하를 고르게 분배하여 애플리케이션의 전체적인 회복력과 효율성을 향상시킵니다.

인증 및 권한 부여

API 엔드포인트 보안은 매우 중요하며, Ocelot은 Identity Server와 같은 기존 인증 제공자와의 통합을 지원합니다. JWT 및 OAuth2를 포함한 인기 있는 인증 체계를 지원하며, 사용자 서비스 접근에 대해 세밀한 제어를 허용합니다.

속도 제한 및 QoS

속도 제한은 사용자가 지정된 기간 내에 요청할 수 있는 요청 수를 제한하여 남용을 방지하고 공정한 서비스를 보장하는 데 필수적입니다. QoS(품질 서비스) 옵션으로 타임아웃 및 재시도 설정이 가능하며, 이를 통해 다양한 네트워크 조건 및 부하에서 서비스가 가용하고 응답이 가능하도록 보장합니다.

.NET 프로젝트에 Ocelot 설정하기

프로젝트에 Ocelot을 통합하려면 NuGet을 통해 Ocelot 패키지를 설치하고 Program 클래스에서 구성해야 합니다:

dotnet add package Ocelot

Ocelot .NET (개발자를 위한 작동 방식): 그림 2 - NuGet 패키지 관리자를 통한 Ocelot .NET 설치

서비스 컨테이너를 설정하기 위해 Startup.cs 또는 Program.cs 클래스에서 요청 빌더 미들웨어를 포함한 서비스를 구성하십시오:

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에서 경로 구성하기

Ocelot은 일반적으로 ocelot.json 구성 파일을 사용하여 라우팅 규칙을 정의합니다. 여러 경로 구성을 보여주는 복잡한 예제입니다:

{
    "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"
    }
}

이 구성은 JSON 파일을 사용하여 경로 및 HTTP 메소드에 따라 API 게이트웨이 요청이 다양한 하류 서비스로 어떻게 라우팅되는지를 명시합니다.

IronPDF를 Ocelot .NET과 함께 사용하기

Ocelot .NET (개발자를 위한 작동 방식): 그림 3 - IronPDF 홈페이지

.NET 애플리케이션에서 IronPDF의 HTML-to-PDF 변환과 Ocelot을 결합하면 PDF 생성 요청을 특정 서비스로 라우팅하거나 내부적으로 처리할 수 있는 강력한 솔루션을 제공합니다. 여기에서는 Ocelot을 API 게이트웨이로 사용하고 IronPDF를 사용하여 HTML로부터 PDF를 생성하는 기본 .NET Core 애플리케이션 설정 방법을 안내하겠습니다.

IronPDF는 원래 레이아웃과 스타일을 정확히 보존하여 HTML을 PDF로 변환하는 데 탁월합니다. 보고서, 송장 및 설명서와 같은 웹 기반 콘텐츠에서 PDF를 생성하는 데 완벽합니다. HTML 파일, URL 및 원시 HTML 문자열에 대한 지원으로 IronPDF는 고품질의 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
$vbLabelText   $csharpLabel

1단계: .NET Core 웹 애플리케이션 설정

먼저 새로운 .NET Core 웹 API 프로젝트를 만듭니다. .NET CLI 또는 Visual Studio를 사용할 수 있습니다.

.NET CLI 사용:

dotnet new webapi -n OcelotWithIronPDF
cd OcelotWithIronPDF
dotnet new webapi -n OcelotWithIronPDF
cd OcelotWithIronPDF
SHELL

2단계: 필수 패키지 추가

Ocelot과 IronPDF를 설치해야 합니다. NuGet을 통해 이러한 패키지를 추가할 수 있습니다.

dotnet add package Ocelot
dotnet add package IronPdf
dotnet add package Ocelot
dotnet add package IronPdf
SHELL

3단계: Ocelot 구성

Ocelot의 라우팅을 구성하기 위해 프로젝트의 루트에 ocelot.json 파일을 추가하십시오. 이 설정은 Ocelot이 PDF 생성 요청을 같은 애플리케이션 내에서 IronPDF가 처리할 특정 경로로 라우팅하도록 가정합니다.

{
    "ReRoutes": [
        {
            "DownstreamPathTemplate": "/api/pdf",
            "DownstreamScheme": "https",
            "DownstreamHostAndPorts": [
                {
                    "Host": "localhost",
                    "Port": 5001
                }
            ],
            "UpstreamPathTemplate": "/generatepdf",
            "UpstreamHttpMethod": ["Post"]
        }
    ],
    "GlobalConfiguration": {
        "BaseUrl": "http://localhost:5000"
    }
}

4단계: Startup.cs 구성

Ocelot의 미들웨어를 포함하도록 Startup.cs를 업데이트하십시오. IronPDF가 로컬 파일 시스템에서 자산을 로드해야 할 수 있으므로 정적 파일을 사용하도록 애플리케이션을 구성했는지 확인하십시오.

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

5단계: IronPDF로 PDF 생성 구현

Controllers 폴더에 새로운 컨트롤러 PdfController.cs를 만드십시오. 이 컨트롤러는 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
$vbLabelText   $csharpLabel

6단계: 애플리케이션 실행

애플리케이션이 ocelot.json에 지정된 포트를 청취하도록 올바르게 구성되었는지 확인하십시오. 이는 Properties/launchSettings.json에서 설정할 수 있습니다.

{
  "profiles": {
    "OcelotWithIronPDF": {
      "commandName": "Project",
      "launchBrowser": false,
      "applicationUrl": "https://localhost:5001;http://localhost:5000",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    }
  }
}

이제 애플리케이션을 실행하여 http://localhost:5000/generatepdf에 HTML 콘텐츠를 게시하고 PDF를 응답으로 받을 수 있어야 합니다.

Ocelot .NET (개발자를 위한 작동 방식): 그림 4

이 예제는 동일한 애플리케이션 내에서 IronPDF와 함께 Ocelot의 기본 구현을 보여줍니다. 생산 시나리오의 경우, 엔드포인트 보안, 오류 시나리오 처리, 특정 요구 사항에 따라 PDF 생성 프로세스 최적화를 고려하십시오.

결론

Ocelot .NET (개발자를 위한 작동 방식): 그림 5 - IronPDF 라이선스 페이지

결론적으로, Ocelot은 마이크로서비스 아키텍처에서 요청을 관리하고 라우팅하기 위한 훌륭한 선택입니다. 라우팅, 로드 밸런싱, 미들웨어 지원, 인증과 같은 강력한 기능은 모든 .NET 개발자에게 강력한 도구가 됩니다. 제공된 자세한 단계를 따르면, Ocelot을 .NET 프로젝트에 효과적으로 통합하여 API 게이트웨이 요구를 간소화할 수 있습니다.

추가적으로, PDF 생성 기능이 필요한 경우, Ocelot에 IronPDF를 통합하는 것은 간단하고 애플리케이션의 기능을 향상시킵니다. IronPDF는 무료 체험판을 제공하며, 라이선스는 비용 효율적인 솔루션으로 시작합니다.

Ocelot과 IronPDF를 함께 활용하여 라우팅 및 문서 생성 요구를 충족하는 포괄적이고 효율적인 마이크로서비스 인프라를 구축할 수 있습니다.

자주 묻는 질문

Ocelot이 .NET 응용 프로그램에서 마이크로서비스 통신을 어떻게 개선할 수 있습니까?

Ocelot은 API 게이트웨이로 작동하여 .NET 응용 프로그램에서 여러 마이크로서비스 간의 HTTP 요청을 효율적으로 라우팅하고 관리합니다. 라우팅, 부하 분산, 인증과 같은 기능을 제공하여 서비스 간의 통신을 간소화합니다.

IronPDF와 함께 Ocelot을 사용하는 이점은 무엇입니까?

Ocelot을 IronPDF와 통합하면 .NET 응용 프로그램 내에서 PDF 생성 요청을 효율적으로 라우팅할 수 있습니다. IronPDF는 HTML에서 PDF로의 변환이 원래 레이아웃과 스타일을 유지하도록 보장하여, 보고서 및 송장과 같은 웹 기반 콘텐츠 생성을 이상적으로 만듭니다.

로드 밸런싱을 위해 Ocelot을 어떻게 구성합니까?

Ocelot은 보통 ocelot.json이라는 이름의 JSON 파일을 통해 구성할 수 있는 라운드 로빈 및 최소 연결을 포함한 다양한 로드 밸런싱 전략을 지원합니다. 이는 마이크로서비스 전체에 트래픽을 고르게 분산시킵니다.

Ocelot의 아키텍처에서 미들웨어는 어떤 역할을 합니까?

Ocelot의 미들웨어는 개발자들이 요청 및 응답을 처리하기 위해 사용자 정의 핸들러를 삽입할 수 있게 합니다. 이는 헤더 추가, 로깅, 또는 응답 수정과 같은 작업을 수행할 수 있으며 API 게이트웨이의 유연성과 기능성을 향상시킵니다.

Ocelot을 .NET 프로젝트에 설정하려면 어떻게 해야 하나요?

Ocelot을 .NET 프로젝트에 설정하려면 NuGet을 통해 Ocelot 패키지를 설치한 후, 프로그램 클래스에 Ocelot 서비스를 추가하고 구성 파일에 경로를 정의합니다. 이 설정은 API 요청의 라우팅 및 관리를 용이하게 합니다.

Ocelot은 라우팅을 처리하기 위해 어떤 전략을 사용합니까?

Ocelot은 API 게이트웨이에서 적절한 다운스트림 서비스로 요청을 전달하기 위해 ocelot.json 파일에 지정된 구성 기반 라우팅을 사용합니다. 이는 와일드카드 라우팅 및 서비스 발견 메커니즘을 지원하여 유연한 라우팅 구성을 가능하게 합니다.

Ocelot은 어떻게 안전한 API 액세스를 보장합니까?

Ocelot은 Identity Server와 같은 인증 제공자와 통합되어 있으며, JWT 및 OAuth2 스키마를 지원하여 사용자 권한을 제어하고 엔드포인트를 보호함으로써 안전한 API 액세스를 보장합니다.

Ocelot을 PDF 생성 워크플로를 최적화하는 데 사용할 수 있습니까?

네, Ocelot은 IronPDF를 사용하는 서비스와 같은 PDF 생성에 전념하는 특정 서비스로 요청을 라우팅할 수 있습니다. 이 설정은 요청을 효과적으로 처리하고 변환 중에 문서 완전성을 유지하여 PDF 워크플로를 최적화합니다.

Ocelot은 어떻게 서비스 발견 메커니즘과 통합됩니까?

Ocelot은 Consul 및 Eureka와 같은 서비스 발견 메커니즘과의 통합을 지원하여 서비스의 현재 상태를 기반으로 요청을 동적으로 라우팅할 수 있습니다. 이러한 통합은 마이크로서비스 아키텍처의 서비스 관리를 간소화합니다.

제이콥 멜러, 팀 아이언 최고기술책임자
최고기술책임자

제이콥 멜러는 Iron Software의 최고 기술 책임자(CTO)이자 C# PDF 기술을 개척한 선구적인 엔지니어입니다. Iron Software의 핵심 코드베이스를 최초로 개발한 그는 창립 초기부터 회사의 제품 아키텍처를 설계해 왔으며, CEO인 캐머런 리밍턴과 함께 회사를 NASA, 테슬라, 그리고 전 세계 정부 기관에 서비스를 제공하는 50명 이상의 직원을 보유한 기업으로 성장시켰습니다.

제이콥은 맨체스터 대학교에서 토목공학 학사 학위(BEng)를 최우등으로 취득했습니다(1998~2001). 1999년 런던에서 첫 소프트웨어 회사를 설립하고 2005년 첫 .NET 컴포넌트를 개발한 후, 마이크로소프트 생태계 전반에 걸쳐 복잡한 문제를 해결하는 데 전문성을 발휘해 왔습니다.

그의 대표 제품인 IronPDF 및 Iron Suite .NET 라이브러리는 전 세계적으로 3천만 건 이상의 NuGet 설치 수를 기록했으며, 그의 핵심 코드는 전 세계 개발자들이 사용하는 다양한 도구에 지속적으로 활용되고 있습니다. 25년의 실무 경험과 41년의 코딩 전문성을 바탕으로, 제이콥은 차세대 기술 리더들을 양성하는 동시에 기업 수준의 C#, Java, Python PDF 기술 혁신을 주도하는 데 주력하고 있습니다.

아이언 서포트 팀

저희는 주 5일, 24시간 온라인으로 운영합니다.
채팅
이메일
전화해