フッターコンテンツにスキップ
.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の主な機能

ルーティング

Ocelotの機能の中核は、そのルーティング能力です。 開発者によって指定された設定に基づいて受信リクエストを適切なサービスルートに一致させ、サービス発見メカニズムと統合することができます。 これは特に、異なるAPIバージョンや多数のサービスエンドポイントを扱う際に有用なワイルドカードルーティングのサポートを含みます。

ミドルウェア / デリゲートハンドラ

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

負荷分散

Ocelotは、事前定義されたいずれの戦略も要件に合わない場合に、ラウンドロビン、最小接続、およびカスタムプロバイダなどのさまざまな負荷分散戦略をサポートします。 この機能は、利用可能なサービス間で負荷を均等に分配し、アプリケーションの全体的な回復力と効率を向上させます。

認証と認可

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();
}
$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"
    }
}

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

IronPDFとOcelot .NETの使用

Ocelot .NET (開発者向けの作動方法): 図3 - IronPDF ホームページ

.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");
    }
}
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");
    }
}
$vbLabelText   $csharpLabel

ステップ1: .NET Core Webアプリケーションのセットアップ

まず、新しい.NET Core Web 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.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 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();
    }
}
$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");
        }
    }
}
$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 は 無料トライアルを提供し、ライセンスは PDF ニーズに対するコスト効果の高いソリューションから始まります。

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

よくある質問

Ocelotは.NETアプリケーションにおけるマイクロサービスのコミュニケーションをどのように改善できるでしょうか?

OcelotはAPIゲートウェイとして機能し、.NETアプリケーション内の複数のマイクロサービス間でHTTPリクエストの効率的なルーティングと管理を容易にします。ルーティング、負荷分散、認証などの機能を提供し、サービス間のコミュニケーションを効率化します。

IronPDFと一緒にOcelotを使用する利点は何ですか?

OcelotをIronPDFと統合することで、.NETアプリケーション内でPDF生成リクエストを効率的にルーティングすることができます。IronPDFはHTMLからPDFへの変換時に元のレイアウトやスタイルを維持するため、レポートや請求書などのWebベースのコンテンツ生成に最適です。

どのようにしてOcelotを負荷分散のために構成しますか?

Ocelotは、ラウンドロビンや最小接続数などのさまざまな負荷分散戦略をサポートしており、通常ocelot.jsonと呼ばれるJSONファイルを介して構成できます。これにより、マイクロサービス間のトラフィックの均等な分配が保証されます。

Ocelotのアーキテクチャにおいてミドルウェアはどんな役割を果たしますか?

Ocelotのミドルウェアはカスタムハンドラーを挿入してリクエストとレスポンスを処理することができます。これによりヘッダーの追加、ロギング、レスポンスの修正などのタスクが可能になり、APIゲートウェイの柔軟性と機能性が向上します。

どのようにして.NETプロジェクトにOcelotをセットアップしますか?

.NETプロジェクトにOcelotをセットアップするには、まずNuGetを通じてOcelotパッケージをインストールし、ProgramクラスにOcelotサービスを追加し、設定ファイルでルートを定義します。このセットアップにより、APIリクエストのルーティングと管理が容易になります。

Ocelotはどのような戦略を使ってルーティングを処理しますか?

Ocelotはocelot.jsonファイルに指定された設定駆動型のルーティングを使用して、APIゲートウェイから適切な下流サービスへリクエストを誘導します。ワイルドカードルーティングやサービス発見メカニズムをサポートし、柔軟なルーティング設定が可能です。

OcelotはどのようにしてAPIアクセスのセキュリティを確保しますか?

OcelotはIdentity Serverなどの認証プロバイダと統合し、JWTやOAuth2スキームをサポートしてAPIアクセスをセキュアにします。これによりユーザーの許可を管理し、エンドポイントの保護を保証します。

OcelotはPDF生成のワークフローを最適化するために使用できますか?

はい、OcelotはIronPDFを使用するようなPDF生成専用サービスにリクエストをルーティングすることができます。この設定により、リクエストを効率的に処理し、変換時にドキュメントの忠実度を保持することでPDFワークフローが最適化されます。

Ocelotはどのようにしてサービス発見メカニズムと統合されますか?

OcelotはConsulやEurekaのようなサービス発見メカニズムとの統合をサポートし、これによりサービスの現在の状態に基づいてリクエストを動的にルーティングします。この統合により、マイクロサービスアーキテクチャにおけるサービス管理が簡素化されます。

Jacob Mellor、Ironチームの最高技術責任者(CTO)
最高技術責任者(CTO)

Jacob Mellorは、Iron Softwareの最高技術責任者であり、C# PDF技術の開拓者としてその先進的な役割を担っています。Iron Softwareのコアコードベースのオリジナルデベロッパーである彼は、創業時から製品のアーキテクチャを形作り、CEOのCameron Rimingtonと協力してNASA、Tesla、全世界の政府機関を含む50人以上の会社に成長させました。

Jacobは、1998年から2001年にかけてマンチェスター大学で土木工学の第一級優等学士号(BEng)を取得しました。1999年にロンドンで最初のソフトウェアビジネスを立ち上げ、2005年には最初の.NETコンポーネントを作成し、Microsoftエコシステムにおける複雑な問題の解決を専門にしました。

彼の旗艦製品であるIronPDFとIronSuite .NETライブラリは、全世界で3000万以上のNuGetインストールを達成しており、彼の基本コードが世界中で使用されている開発者ツールを支えています。商業的な経験を25年間積み、コードを書くことを41年間続けるJacobは、企業向けのC#、Java、およびPython PDF技術の革新を推進し続け、次世代の技術リーダーを指導しています。