.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();
}
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
VB   C#

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アプリケーションのセットアップについて説明します。

ステップ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();
    }
}
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
VB   C#

ステップ 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");
        }
    }
}
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
VB   C#

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

< 以前
C#におけるMicrosoft.Extensions.Caching.Memoryの例(PDF付き)
次へ >
NHibernate C#(開発者向けの動作方法)