IRONSOFTWAREHOME
开发者更新

Ocelot .NET(开发人员如何使用)

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

Ocelot API 网关 是一个 .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,并允许对用户访问服务进行细粒度控制。

速率限制和 QoS

速率限制对于防止滥用和确保公平使用服务至关重要,通过限制用户在给定时间段内可以发出的请求数量来实现。 服务质量(QoS)选项如设置超时和重试确保服务在各种网络条件和负载下保持可用和响应。

在 .NET 项目中设置 Ocelot

要将 Ocelot 集成到您的项目中,您需要通过 NuGet 安装 Ocelot 包并在 Program 类中进行配置:

> dotnet add package Ocelot

Ocelot .NET(开发者的工作原理):图2 - 通过NuGet包管理器安装Ocelot .NET

在您的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 方法使用 JSON 文件将 API 网关的请求路由到不同的下游服务。

在 Ocelot .NET 中使用 IronPDF

Ocelot .NET(开发者的工作原理):图3 - IronPDF首页

在 .NET 应用程序中结合 Ocelot 和 IronPDF 的 HTML 转 PDF 转换 提供了一种强大的解决方案,您可以将 PDF 生成请求路由到特定服务或在内部处理。 在这里,我将指导您设置一个使用 Ocelot 作为 API 网关和 IronPDF 从 HTML 生成 PDF 的基本 .NET Core 应用程序。

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

步骤 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 一起将公司转变为一家拥有 50 多名员工的公司,为 NASA、特斯拉和全球政府机构提供服务。

相关文章

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 起