.NET ヘルプ

Ocelot .NET (開発者にとっての動作方法)

Ocelot API Gateway は、複数のマイクロサービスにまたがるリクエストを処理するためにAPIゲートウェイで一般的に使用されるAPIゲートウェイパターンを実装する.NETライブラリです。 軽量なAPIゲートウェイとして機能し、クライアントからのリクエストを下流のサービスにルーティングします。 この記事では、Ocelot APIゲートウェイがどのようにクライアントとダウンストリーム・サービスの間に位置するのか、そのインストール、設定、主な機能、そしてその機能を実証する実践的な例について詳しく説明します。 私たちはIronPDF OverviewとOcelot APIの組み合わせについても探ります。

Ocelot .NETとは何ですか?

Ocelot .NET(開発者のための仕組み):図1 - Ocelot .NET ホームページ

Ocelotは、複数のマイクロサービス間でのリクエストのルーティングを容易にするために設計された、.NETアプリケーション向けのオープンソースのAPIゲートウェイソリューションです。 それはリバースプロキシとして機能し、クライアントからのHTTPリクエストを管理し、ASP.NET Core環境で適切なサービスにルーティングします。 ASP.NET Core上で開発されたOcelotは、.NETエコシステムとシームレスに統合され、現代のアプリケーションに不可欠な堅牢な機能セットを提供します。

Ocelotの主な機能

  • 簡単な設定: 迅速かつ簡単に設定が可能で、複雑なソリューションを必要としません。
  • 柔軟なロードバランシング: マイクロサービスのトラフィック分散を高度に制御できます。
  • 高度なルーティング: パスベース、クエリストリングベース、または方法ベースのルーティングをサポートします。
  • 認証と認可: 主要な認証プロバイダと統合し、複雑な認可ポリシーを適用可能です。
  • コンテンツ変換: ヘッダーやコンテンツの変換に対応し、APIクライアントとの適切なインターフェースを提供します。
  • キャッシュ: 公開APIのレスポンスを効率的にキャッシュし、パフォーマンスを向上させます。

ルーティング

Ocelot の機能の中心には、そのルーティング機能があります。 それは、開発者によって指定された構成に基づいて、受信要求を適切なサービスルートにマッチングし、サービスディスカバリーメカニズムと統合することができます。 これは、ワイルドカードルーティングのサポートが含まれており、特に異なるAPIバージョンや多数のサービスエンドポイントを扱う際に役立ちます。

ミドルウェア / デリゲーティングハンドラー

Ocelotは、開発者がカスタムミドルウェアやハンドラーを挿入して、クライアントやサービスに到達する前にリクエストやレスポンスを処理できるようにします。これは、ヘッダーの追加、リクエストのログ記録、さらには必要に応じてレスポンス構造の変更に役立ちます。

ロードバランシング

Ocelotは、ラウンドロビン、最小接続数、または事前定義された戦略が要件に合わない場合にはカスタムプロバイダーなど、様々な負荷分散戦略を標準でサポートしています。 この機能により、負荷が利用可能なサービス全体に均等に分散されるため、アプリケーションの全体的なレジリエンスと効率が向上します。

認証および認可

APIエンドポイントのセキュリティは非常に重要であり、OcelotはIdentity Serverなどの既存の認証プロバイダとの統合をサポートしています。 それは、JWTやOAuth2を含む一般的な認証スキームをサポートしており、ユーザーのサービスへのアクセスを詳細に制御することが可能です。

レート制限と品質管理 (QoS)

レート制限は、乱用を防止し、公正なサービス利用を確保するために、特定の期間内にユーザーが行うリクエストの数を制限する重要な手段です。 サービス品質(QoS)オプションとして、タイムアウトやリトライの設定があり、これによりさまざまなネットワーク条件や負荷の下でもサービスが利用可能で応答性を維持します。

.NETプロジェクトでOcelotを設定する

プロジェクトにOcelotを統合するには、NuGetを介してOcelotパッケージをインストールし、Programクラスで設定する必要があります。

Install-Package IronPdf

Ocelot .NET(開発者にとっての動作方法): 図2 - Ocelot .NETをNuGetパッケージマネージャーでインストールする

Startup.cs または Program クラスでリクエストビルダーミドルウェアを含むサービスを構成し、サービスコンテナを設定します。

public void ConfigureServices(IServiceCollection services)
{
    services.AddOcelot();
}
public async void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    // Optionally handle ASP.NET Core environment settings
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }
    // Start Ocelot
    await app.UseOcelot();
}
public void ConfigureServices(IServiceCollection services)
{
    services.AddOcelot();
}
public async void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    // Optionally handle ASP.NET Core environment settings
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }
    // Start Ocelot
    await app.UseOcelot();
}
Public Sub ConfigureServices(ByVal services As IServiceCollection)
	services.AddOcelot()
End Sub
Public Async Sub Configure(ByVal app As IApplicationBuilder, ByVal env As IWebHostEnvironment)
	' Optionally handle ASP.NET Core environment settings
	If env.IsDevelopment() Then
		app.UseDeveloperExceptionPage()
	End If
	' Start Ocelot
	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"
    }
}

この設定は、パスとHTTPメソッドに基づいて、APIゲートウェイへのリクエストが異なる下流サービスにどのようにルーティングされるかをJSONファイルを使用して設定する方法を指定します。

Ocelot .NETでIronPDFを使用する

Ocelot .NET(開発者向けの仕組み):図3 - IronPDF ホームページ

OcelotとIronPDFのHTMLからPDFへの変換を.NETアプリケーションで組み合わせることで、PDF生成リクエストを特定のサービスにルーティングしたり、内部で処理したりできる強力なソリューションが提供されます。 ここでは、OcelotをAPI Gatewayとして使い、IronPDFを使ってHTMLからPDFを生成する基本的な.NET Coreアプリケーションのセットアップについて説明します。

IronPDFは、元のレイアウトとスタイルを正確に保持してHTMLからPDFへの変換に優れています。 それは、レポート、請求書、およびドキュメントなどのWebベースのコンテンツからPDFを作成するのに最適です。 IronPDFはHTMLファイル、URL、生のHTML文字列をサポートしており、簡単に高品質なPDFドキュメントを生成します。

using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. 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");

        // 2. 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");

        // 3. 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();

        // 1. 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");

        // 2. 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");

        // 3. 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()

		' 1. 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")

		' 2. 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")

		' 3. 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 Webアプリケーションのセットアップ

まず、新しい .NET Core Web API プロジェクトを作成します。 これを行うには、.NET CLIまたはVisual Studioを使用できます。

.NET を使用する:

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を設定する

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 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生成の実装

新しいコントローラーPdfController.csをControllersフォルダーに作成します。 このコントローラーは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 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 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> ByVal htmlContent As String) As IActionResult
			Dim renderer = New ChromePdfRenderer()
			Dim pdf = renderer.RenderHtmlAsPdf(htmlContent)
			Dim output = pdf.BinaryData
			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"
      }
    }
  }
}

次に、アプリケーションを実行し、HTMLコンテンツをhttp://localhost:5000/generatepdfに投稿し、PDFを受け取ることができるはずです。

Ocelot .NET(開発者向けの仕組み):図4

この例は、同じアプリケーション内でOcelotとIronPDFを基本的に実装する方法を示しています。 本番環境においては、エンドポイントのセキュリティ確保、エラーシナリオの処理、特定の要件に基づいたPDF生成プロセスの最適化を検討してください。

結論

Ocelot .NET(開発者にとっての仕組み):図5 - IronPDFライセンスページ

結論として、Ocelotはマイクロサービスアーキテクチャにおけるリクエストの管理とルーティングに最適な選択肢です。 ルーティング、負荷分散、ミドルウェアのサポート、認証などの強力な機能により、.NET開発者にとって強力なツールとなります。 提供された詳細な手順に従うことで、Ocelotを.NETプロジェクトに効果的に統合し、APIゲートウェイのニーズを効率良く統一することができます。

また、PDF生成機能が必要な場合、IronPDFをOcelotと統合することは簡単で、アプリケーションの機能を向上させます。 IronPDFはライセンスの無料トライアルを提供しており、ライセンスはPDFニーズに対する費用対効果の高いソリューションから始まります。

OcelotとIronPDFを併用することで、ルーティングおよびドキュメント生成の要件を満たす、包括的かつ効率的なマイクロサービスインフラストラクチャを構築することができます。

チペゴ
ソフトウェアエンジニア
チペゴは優れた傾聴能力を持ち、それが顧客の問題を理解し、賢明な解決策を提供する助けとなっています。彼は情報技術の学士号を取得後、2023年にIron Softwareチームに加わりました。現在、彼はIronPDFとIronOCRの2つの製品に注力していますが、顧客をサポートする新しい方法を見つけるにつれて、他の製品に関する知識も日々成長しています。Iron Softwareでの協力的な生活を楽しんでおり、さまざまな経験を持つチームメンバーが集まり、効果的で革新的な解決策を提供することに貢献しています。チペゴがデスクを離れているときは、良い本を楽しんだり、サッカーをしていることが多いです。
< 以前
C#におけるMicrosoft.Extensions.Caching.Memoryの例(PDF付き)
次へ >
NHibernate C#(開発者向けの動作方法)