.NET ヘルプ

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

リーガン・パン
リーガン・パン
2024年6月6日
共有:

Ocelot API ゲートウェイは、複数のマイクロサービスにまたがるリクエストを処理するAPIゲートウェイで一般的に使用される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の主な機能

  • 簡単な設定: 迅速かつ簡単に設定が可能で、複雑なソリューションを必要としません。
  • 柔軟なロードバランシング: マイクロサービスのトラフィック分散を高度に制御できます。
  • 高度なルーティング: パスベース、クエリストリングベース、または方法ベースのルーティングをサポートします。
  • 認証と認可: 主要な認証プロバイダと統合し、複雑な認可ポリシーを適用可能です。
  • コンテンツ変換: ヘッダーやコンテンツの変換に対応し、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 - NuGetパッケージマネージャーを通じてOcelot .NETをインストール

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

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

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

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

.NET を使用する:

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

ステップ 5: IronPDFを使用したPDF生成の実装

コントローラー フォルダーに新しいコントローラー 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 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");
        }
    }
}

ステップ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

ローカルホスト ポート5000 ジェネレート PDF

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

リーガン・パン
ソフトウェアエンジニア
レーガンはリーディング大学で電子工学の学士号を取得しました。Iron Softwareに入社する前の仕事では、一つのタスクに集中して取り組んでいました。Iron Softwareでは、営業、技術サポート、製品開発、マーケティングのいずれにおいても広範な業務に携わることが最も楽しいと感じています。彼は、Iron Softwareライブラリを開発者がどのように使用しているかを理解し、その知識を使ってドキュメントを継続的に改善し、製品を開発することを楽しんでいます。
< 以前
C#におけるMicrosoft.Extensions.Caching.Memoryの例(PDF付き)
次へ >
NHibernate C#(開発者向けの動作方法)