
Ocelot .NET(開発者向けの仕組み)
Ocelot API Gatewayは、複数のマイクロサービスにわたるリクエストを処理するためにAPIゲートウェイで一般的に使用されるAPIゲートウェイパターンを実装する.NETライブラリです。 それは軽量なAPIゲートウェイとして機能し、クライアントからのリクエストをダウンストリームサービスへルーティングします。 この記事では、Ocelot APIゲートウェイがクライアントとダウンストリームサービスの間にどのように位置するか、そのインストール、設定、主要機能、およびその機能を示す実用的な例を詳しく説明します。 また、IronPDF OverviewとOcelot APIの組み合わせも探ります。
Ocelot .NETとは何ですか?

Ocelotは、.NETアプリケーション向けのオープンソースAPIゲートウェイソリューションであり、複数のマイクロサービスにわたるリクエストのルーティングを容易にするよう設計されています。 それはリバースプロキシとして機能し、クライアントからのHTTPリクエストを管理し、ASP.NET Core環境で適切なサービスにルーティングします。 ASP.NET Core上で開発されたOcelotは、.NETエコシステムとシームレスに統合し、現代のアプリケーションに必要な強力な機能を提供します。
Ocelotの主な機能
ルーティング
Ocelotの機能の中核は、そのルーティング能力です。 開発者によって指定された設定に基づいて受信リクエストを適切なサービスルートに一致させ、サービス発見メカニズムと統合することができます。 これは特に、異なるAPIバージョンや多数のサービスエンドポイントを扱う際に有用なワイルドカードルーティングのサポートを含みます。
ミドルウェア / デリゲートハンドラ
Ocelotは、開発者がクライアントまたはサービスにリクエストおよびレスポンスが到達する前にそれらを処理できるカスタムミドルウェアまたはハンドラを挿入することを可能にします。これは、ヘッダーを追加したり、リクエストを記録したり、必要に応じてレスポンス構造を変更したりするのに役立ちます。
負荷分散
Ocelotは、事前定義されたいずれの戦略も要件に合わない場合に、ラウンドロビン、最小接続、およびカスタムプロバイダなどのさまざまな負荷分散戦略をサポートします。 この機能は、利用可能なサービス間で負荷を均等に分配し、アプリケーションの全体的な回復力と効率を向上させます。
認証と認可
APIエンドポイントのセキュリティは重要であり、Ocelotは、Identity Serverのような既存の認証プロバイダとの統合をサポートします。 JWTやOAuth2などの人気のある認証方式をサポートし、サービスへのユーザーアクセスをきめ細かく制御できます。
レート制限とQoS
レート制限は、サービスの乱用を防ぎ、特定の期間内にユーザーが行うことができるリクエストの数を制限することにより、公平な使用を確保するために重要です。 サービスがさまざまなネットワーク条件および負荷下でも利用可能で応答できることを保証するために、タイムアウトとリトライを設定するようなサービス品質 (QoS) オプション。
.NETプロジェクトでのOcelotの設定
プロジェクトにOcelotを統合するには、NuGetを介してOcelotパッケージをインストールし、Programクラスでそれを設定する必要があります:

サービスコンテナを設定するために、リクエストビルダーミドルウェアを含むサービスを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 Sub ConfigureServices(services As IServiceCollection)
' Add Ocelot services to the service collection
services.AddOcelot()
End Sub
Public Async Sub Configure(app As IApplicationBuilder, 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 SubOcelotのルート設定
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"
}
}
この設定は、APIゲートウェイへのリクエストがパスとHTTPメソッドに基づいてどのように異なるダウンストリームサービスにルーティングされるかを指定し、JSONファイルを使用して設定します。
IronPDFとOcelot .NETの使用

.NETアプリケーションでIronPDFのHTML-to-PDF変換を使用してOcelotを組み合わせることは、PDF生成リクエストを特定のサービスにルーティングしたり内部で処理したりできる強力なソリューションを提供します。 ここでは、基本的な.NET Coreアプリケーションを設定し、APIゲートウェイとしてOcelotを使用し、HTMLからPDFを生成するIronPDFを実装する手順を説明します。
IronPDF は HTML から PDF への変換に秀でており、元のレイアウトとスタイルを正確に保存します。 これは、レポート、請求書、ドキュメントなどの Web ベースのコンテンツから 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");
}
}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 Webアプリケーションのセットアップ
まず、新しい.NET Core Web APIプロジェクトを作成します。 これは.NET CLIまたはVisual Studioを使用して行うことができます。
.NET CLIを使用する場合:
dotnet new webapi -n OcelotWithIronPDF
cd OcelotWithIronPDF
ステップ2: 必要なパッケージの追加
OcelotとIronPDFをインストールする必要があります。 これらのパッケージはNuGetを介して追加できます。
dotnet add package Ocelot
dotnet add package IronPdf
ステップ3: Ocelotの構成
ocelot.jsonファイルをプロジェクトのルートに追加して、Ocelotのルーティングを設定します。 この設定は、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 の構成
Startup.csを更新してOcelotのミドルウェアを含めます。 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 Sub ConfigureServices(services As IServiceCollection)
services.AddControllers()
services.AddOcelot()
End Sub
Public Async Sub Configure(app As IApplicationBuilder, 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");
}
}
}
ステップ6: アプリケーションの実行
ocelot.jsonで指定したポートをリッスンするようにアプリケーションが正しく設定されていることを確認します。 これはProperties/launchSettings.jsonで設定できます。
{
"profiles": {
"OcelotWithIronPDF": {
"commandName": "Project",
"launchBrowser": false,
"applicationUrl": "https://localhost:5001;http://localhost:5000",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
}
さて、アプリケーションを実行し、HTML コンテンツをhttp://localhost:5000/generatepdfに投稿し、応答として PDF を受け取ることができるはずです。

この例は、同一アプリケーション内でIronPDFとOcelotを使用した基本的な実装を紹介しています。 本番環境のシナリオは、エンドポイントを保護し、エラーシナリオを処理し、特定の要件に基づいてPDF生成プロセスを最適化することを検討してください。
結論
結論として、Ocelot はマイクロサービスアーキテクチャにおけるリクエストの管理とルーティングに適した選択肢です。 ルーティング、負荷分散、ミドルウェアサポート、認証などの強力な機能により、ど for .NET開発者にとっても強力なツールとなります。 詳しい手順に従うことで、.NETプロジェクトにOcelotを効果的に統合し、APIゲートウェイのニーズを効率化することができます。
さらに、PDF生成機能を必要とする場合は、OcelotとIronPDFを統合することで、アプリケーションの機能を向上させることが簡単です。 IronPDF は 無料トライアルを提供し、ライセンスは PDF ニーズに対するコスト効果の高いソリューションから始まります。
OcelotとIronPDFを一緒に活用することで、ルーティングとドキュメント生成の要件を満たす包括的で効率的なマイクロサービスインフラストラクチャを構築できます。

ジェイコブ・メラーはIron Softwareの最高技術責任者(CTO)であり、C# PDFテクノロジーを開拓する先見的なエンジニアです。Iron Softwareのコアコードベースを支えるオリジナル開発者として、彼は創業以来、会社の製品アーキテクチャを形成し、CEOのCameron Rimingtonとともに、会社をNASA、Tesla、および世界的な政府機関にサービスを提供する50人以上の会社に変えました。1999年にロンドンで最初のソフトウェアビジネスを開業し、2005年に最初 for .NETコンポーネントを作成した後、Microsoftのエコシステム全体で複雑な問題を解決することを専門としました。
関連する記事


