IRONSOFTWAREHOME
開發者更新

Ocelot .NET(對於開發者的運行原理)

Jacob Mellor,首席技術官 @ Team Iron
Jacob Mellor
Updated: 2026年4月21日

Ocelot API Gateway 是一個 .NET 程式庫,用來實現 API 閘道器模式,常用於 API 閘道器中處理多個微服務的請求。 它作為輕量級 API 閘道器,將客戶端的請求路由到下游服務。 本文深入介紹了 Ocelot API 閘道器如何位於客戶端和下游服務之間,涵蓋其安裝、配置、關鍵特性及實用範例,以展示其能力。 我們還將探索 IronPDF 概覽 與 Ocelot API 的結合。

什麼是 Ocelot .NET?

Ocelot .NET(對開發者的運作方式): 圖1 - Ocelot .NET 首頁

Ocelot 是 .NET 應用程式的開源 API 閘道器解決方案,旨在促進多個微服務的請求路由。 它作為一個反向代理,管理客戶端的 HTTP 請求並將它們路由到 ASP.NET Core 環境中的適當服務。 Ocelot 基於 ASP.NET Core 開發,無縫整合到 .NET 生態系統中,提供現代應用程式所需的強大功能集。

Ocelot 的關鍵特性

路由

Ocelot 功能的核心是其路由能力。 它依據開發人員指定的配置匹配傳入的請求到適當的服務路由,並且可以與服務發現機制整合。 這包括對通配符路由的支持,在處理不同版本的 API 或大量伺服器端點時特別有用。

中介軟體 / 委派處理器

Ocelot 允許開發者注入自定義中介軟體或處理器,可以在請求和回應在到達客戶端或服務之前進行處理。這對於新增標頭、請求日誌紀錄甚至在需要時修改回應結構非常有用。

負載平衡

Ocelot 支持多種現成的負載平衡策略,如輪詢、最少連接等,如果預先定義的策略都不合適,還有自定義提供者。 這個功能確保負載在可用服務之間均勻分配,提高應用程式的整體彈性和效率。

身份驗證和授權

保護 API 端點至關重要,Ocelot 提供與現有身份驗證提供者(如 Identity Server)整合的支持。 它支持流行的身份驗證方案,包括 JWT 和 OAuth2,並允許對使用者存取服務進行細粒度控制。

速率限制和服務質量

速率限制對於防止濫用和確保公平使用服務至關重要,限制使用者在特定時間內可以發出的請求數量。 服務質量選項如設置超時和重試確保服務在不同的網路狀況和負載下保持可用和響應。

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

在 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"
    }
}
JSON

這個配置詳細說明了如何根據路徑和 HTTP 方法將 API 閘道器的請求路由到不同的下游服務,使用 JSON 文件進行設置。

在 Ocelot .NET 中使用 IronPDF

Ocelot .NET(對開發者的運作方式): 圖3 - IronPDF 首頁

在 .NET 應用程式中結合 Ocelot 和 IronPDF 的 HTML 到 PDF 轉換 提供了一個強大的解決方案,您可以將 PDF 生成請求路由到特定服務或內部處理。 在這裡,我將引導您設定一個基本的 .NET Core 應用程式,使用 Ocelot 作為 API 閘道器並利用 IronPDF 從 HTML 生成 PDF。

IronPDF在HTML到PDF的轉換中表現出色,確保精確保留原始佈局和樣式。 它非常適合從基於網路的內容(如報告、發票和文件)建立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");
    }
}

步驟 1:設置 .NET Core Web 應用程式

首先,建立一個新的 .NET Core Web API 專案。 您可以使用 .NET CLI 或 Visual Studio 來執行此操作。 using .NET CLI:

dotnet new webapi -n OcelotWithIronPDF
cd OcelotWithIronPDF
SHELL

步驟 2:新增所需套件

您需要安裝 Ocelot 和 IronPDF。 您可以透過 NuGet 新增這些套件。

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"
    }
}
JSON

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

步驟 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");
        }
    }
}
C#

步驟 6:運行應用程式

確保您的應用程式正確配置為監聽 ocelot.json 中指定的端口。 您可以在 Properties/launchSettings.json 中設置這個。

{
  "profiles": {
    "OcelotWithIronPDF": {
      "commandName": "Project",
      "launchBrowser": false,
      "applicationUrl": "https://localhost:5001;http://localhost:5000",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    }
  }
}
JSON

現在,運行您的應用程式,您應該能夠將 HTML 內容發送到 http://localhost:5000/generatepdf,並獲得回應的 PDF。

Ocelot .NET(對開發者的運作方式): 圖4

這個範例展示了在同一應用程式內結合 Ocelot 和 IronPDF 的基本實現。 在生產場景中,請考慮保護您的端點,處理錯誤場景,並根據具體需求優化 PDF 生成過程。

結論

總結來說,Ocelot 是管理和路由微服務架構中請求的絕佳選擇。 其強大的路由、負載平衡、中介軟體支持和身份驗證等功能,使其成為任何 .NET 開發者的強大工具。 通過遵循詳細提供的步驟,您可以有效地將 Ocelot 整合到您的 .NET 專案中,以簡化 API 閘道器需求。

此外,如果您需要 PDF 生成功能,將 IronPDF 與 Ocelot 結合使用既直觀又能增強您應用程式的功能。 IronPDF 提供免費試用,其授權從具成本效益的解決方案開始,滿足您的 PDF 需求。

透過結合使用 Ocelot 和 IronPDF,您可以建立一個全面且高效的微服務架構,滿足路由和文件生成的需求。

Jacob Mellor,首席技術官 @ Team Iron
首席技術官

Jacob Mellor是Iron Software的首席技術官,一位在C# PDF技術上開創先河的遠見工程師。作為Iron Software核心程式碼庫的原開發者,他從創立以來就一直在塑造公司的產品架構,與首席執行官Cameron Rimington一起將公司轉變為服務於NASA、特斯拉和全球政府公司的50多名人員的公司。

...
閱讀更多

相關文章

Key in blue circle

立即免費取得 30 天試用金鑰。

Your trial license will be sent to your email address

無任何限制。100% 解鎖。無需信用卡。

OR
bullet_checked無需信用卡或建立帳號無任何限制。100% 解鎖。無需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried Iron Suite
預訂您的免費現場演示
Booking Badge

受到全球數百萬工程師的信任

Iron Software的客戶標誌
獲取您的無義務諮詢
填寫以下表格或電子郵件sales@ironsoftware.com
您的詳細資訊將始終保密。
受到全球數百萬工程師的信任
Iron Software的客戶標誌
立即獲取您的30天試用金鑰。
無需信用卡或帳戶建立
C# 用於PDF的NuGet程式庫
使用NuGet安裝

版本: 2026.9

PM > Install-Package IronPdf
nuget.org/packages/IronPdf/
  1. 在解決方案資源管理器,右鍵點選參考,管理NuGet包
  2. 選擇瀏覽並搜尋"IronPdf"
  3. 選擇套件並安裝
C# PDF DLL
下載DLL

版本: 2026.9

或者點擊此處下載Windows安裝程式。

  1. 下載並解壓IronPDF到類似~/Libs的位置,位於您的解決方案目錄中
  2. 在Visual Studio解決方案資源管理器,右鍵點選參考。選擇瀏覽,"IronPdf.dll"

授權從$999起