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

서비스 컨테이너를 설정하기 위해 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
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과 함께 사용하기

.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
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
2단계: 필수 패키지 추가
Ocelot과 IronPDF를 설치해야 합니다. NuGet을 통해 이러한 패키지를 추가할 수 있습니다.
dotnet add package Ocelot
dotnet add package IronPdf
dotnet add package Ocelot
dotnet add package IronPdf
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
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
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를 응답으로 받을 수 있어야 합니다.

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

결론적으로, 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와 같은 서비스 발견 메커니즘과의 통합을 지원하여 서비스의 현재 상태를 기반으로 요청을 동적으로 라우팅할 수 있습니다. 이러한 통합은 마이크로서비스 아키텍처의 서비스 관리를 간소화합니다.




