Ir para o conteúdo do rodapé
AJUDA DO .NET

Ocelot .NET (Como funciona para desenvolvedores)

Ocelot API Gateway é uma biblioteca .NET que implementa o padrão de gateway de API comumente usado em gateways de API para lidar com solicitações em vários microsserviços. Ele funciona como um gateway de API leve, encaminhando solicitações de clientes para serviços subsequentes. Este artigo oferece uma visão aprofundada de como o gateway de API Ocelot se posiciona entre os clientes e os serviços downstream, abordando sua instalação, configuração, principais recursos e exemplos práticos para demonstrar suas capacidades. Também exploraremos a Visão Geral do IronPDF e a API do Ocelot em conjunto.

O que é Ocelot .NET?

Ocelot .NET (Como funciona para desenvolvedores): Figura 1 - Página inicial do Ocelot .NET

Ocelot é uma solução de gateway de API de código aberto para aplicações .NET , projetada para facilitar o roteamento de requisições entre múltiplos microsserviços. Ele atua como um proxy reverso, gerenciando solicitações HTTP de clientes e encaminhando-as para os serviços apropriados em um ambiente ASP.NET Core . Desenvolvido em ASP.NET Core, o Ocelot integra-se perfeitamente ao ecossistema .NET , oferecendo um conjunto robusto de recursos essenciais para aplicações modernas.

Principais características do Ocelot

Roteamento

A principal funcionalidade do Ocelot é sua capacidade de roteamento. Ele relaciona as solicitações recebidas às rotas de serviço apropriadas com base na configuração especificada pelos desenvolvedores e pode ser integrado a mecanismos de descoberta de serviços. Isso inclui suporte para roteamento curinga, o que é particularmente útil ao lidar com versões de API variáveis ​​ou inúmeros endpoints de serviço.

Middleware / Manipuladores de delegação

O Ocelot permite que os desenvolvedores injetem middleware ou manipuladores personalizados que podem processar solicitações e respostas antes que elas cheguem ao cliente ou ao serviço. Isso é útil para adicionar cabeçalhos, registrar solicitações ou até mesmo modificar a estrutura da resposta conforme necessário.

Balanceamento de carga

O Ocelot oferece suporte a diversas estratégias de balanceamento de carga prontas para uso, como Round Robin, Menor Conexão e um provedor personalizado caso nenhuma das estratégias predefinidas atenda aos requisitos. Essa funcionalidade garante que a carga seja distribuída uniformemente entre os serviços disponíveis, aumentando a resiliência e a eficiência geral da aplicação.

Autenticação e Autorização

Garantir a segurança dos endpoints da API é fundamental, e o Ocelot oferece suporte para integração com provedores de autenticação existentes, como o Identity Server. Ele oferece suporte a esquemas de autenticação populares, incluindo JWT e OAuth2, e permite um controle preciso sobre o acesso do usuário aos serviços.

Limitação de taxa e QoS

A limitação de taxa é essencial para prevenir abusos e garantir o uso justo dos serviços, limitando o número de solicitações que um usuário pode fazer em um determinado período. Opções de Qualidade de Serviço (QoS), como a configuração de tempos limite e novas tentativas, garantem que os serviços permaneçam disponíveis e responsivos sob diversas condições e cargas de rede.

Configurando o Ocelot em um projeto .NET

Para integrar o Ocelot ao seu projeto, você precisa instalar o pacote Ocelot via NuGet e configurá-lo na classe Program:

dotnet add package Ocelot

Ocelot .NET (Como funciona para desenvolvedores): Figura 2 - Instalar o Ocelot .NET através do Gerenciador de Pacotes NuGet

Configure os serviços, incluindo o middleware do construtor de requisições, na sua classe Startup.cs ou Program.cs para configurar o contêiner de serviços:

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();
}
Public Sub ConfigureServices(ByVal services As IServiceCollection)
	' Add Ocelot services to the service collection
	services.AddOcelot()
End Sub

Public Async Sub Configure(ByVal app As IApplicationBuilder, ByVal env As IWebHostEnvironment)
	' Use the developer exception page when in development mode
	If env.IsDevelopment() Then
		app.UseDeveloperExceptionPage()
	End If

	' Start Ocelot middleware
	Await app.UseOcelot()
End Sub
$vbLabelText   $csharpLabel

Configurando rotas no Ocelot

O Ocelot utiliza um arquivo de configuração, normalmente ocelot.json , para definir as regras de roteamento. Aqui está um exemplo mais complexo que demonstra múltiplas configurações de rotas:

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

Esta configuração especifica como as solicitações para o gateway de API são roteadas para diferentes serviços downstream com base no caminho e no método HTTP, usando o arquivo JSON para configuração.

Utilizando o IronPDF com o Ocelot .NET

Ocelot .NET (Como funciona para desenvolvedores): Figura 3 - Página inicial do IronPDF

A combinação do Ocelot com a conversão de HTML para PDF do IronPDF em uma aplicação .NET oferece uma solução poderosa, permitindo direcionar solicitações de geração de PDF para um serviço específico ou tratá-las internamente. Neste guia, vou orientá-lo na configuração de um aplicativo .NET Core básico que usa o Ocelot como um gateway de API e o IronPDF para gerar PDFs a partir de HTML.

O IronPDF se destaca na conversão de HTML para PDF , garantindo a preservação precisa dos layouts e estilos originais. É perfeito para criar PDFs a partir de conteúdo da web, como relatórios, faturas e documentação. Com suporte para arquivos HTML, URLs e strings HTML brutas, o IronPDF produz facilmente documentos PDF de alta qualidade.

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

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim renderer = New ChromePdfRenderer()

		' Convert HTML string to PDF
		Dim htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"
		Dim pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent)
		pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf")

		' Convert HTML file to PDF
		Dim htmlFilePath = "path_to_your_html_file.html" ' Specify the path to your HTML file
		Dim pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath)
		pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf")

		' Convert URL to PDF
		Dim url = "http://ironpdf.com" ' Specify the URL
		Dim pdfFromUrl = renderer.RenderUrlAsPdf(url)
		pdfFromUrl.SaveAs("URLToPDF.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel

Etapa 1: Configurar o aplicativo Web .NET Core

Primeiro, crie um novo projeto de API Web .NET Core . Você pode fazer isso usando a CLI do .NET ou o Visual Studio.

Utilizando a CLI do .NET :

dotnet new webapi -n OcelotWithIronPDF
cd OcelotWithIronPDF
dotnet new webapi -n OcelotWithIronPDF
cd OcelotWithIronPDF
SHELL

Passo 2: Adicionar os pacotes necessários

Você precisa instalar o Ocelot e o IronPDF. Você pode adicionar esses pacotes via NuGet.

dotnet add package Ocelot
dotnet add package IronPdf
dotnet add package Ocelot
dotnet add package IronPdf
SHELL

Etapa 3: Configurar o Ocelot

Adicione um arquivo ocelot.json à raiz do seu projeto com o seguinte conteúdo para configurar o roteamento do Ocelot. Esta configuração pressupõe que você deseja que o Ocelot direcione as solicitações de geração de PDF para um caminho específico que será tratado pelo IronPDF dentro do mesmo aplicativo.

{
    "ReRoutes": [
        {
            "DownstreamPathTemplate": "/api/pdf",
            "DownstreamScheme": "https",
            "DownstreamHostAndPorts": [
                {
                    "Host": "localhost",
                    "Port": 5001
                }
            ],
            "UpstreamPathTemplate": "/generatepdf",
            "UpstreamHttpMethod": ["Post"]
        }
    ],
    "GlobalConfiguration": {
        "BaseUrl": "http://localhost:5000"
    }
}

Etapa 4: Configurar o arquivo Startup.cs

Atualize o arquivo Startup.cs para incluir o middleware do Ocelot. Certifique-se também de configurar seu aplicativo para usar arquivos estáticos, pois o IronPDF pode precisar carregar recursos do sistema de arquivos local.

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
$vbLabelText   $csharpLabel

Etapa 5: Implementar a geração de PDFs com o IronPDF

Crie um novo controlador chamado PdfController.cs na sua pasta Controllers. Este controlador irá lidar com as solicitações de geração de 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");
        }
    }
}
Imports Microsoft.AspNetCore.Mvc
Imports IronPdf

Namespace OcelotWithIronPdf.Controllers

    <ApiController>
    <Route("api/[controller]")>
    Public Class PdfController
        Inherits ControllerBase

        <HttpPost>
        Public Function CreatePdfFromHtml(<FromBody> htmlContent As String) As IActionResult
            Dim renderer = New ChromePdfRenderer()
            Dim pdf = renderer.RenderHtmlAsPdf(htmlContent)
            Dim output = pdf.BinaryData

            ' Return the PDF as a file result
            Return File(output, "application/pdf", "generated.pdf")
        End Function

    End Class

End Namespace
$vbLabelText   $csharpLabel

Etapa 6: Execute o aplicativo

Certifique-se de que seu aplicativo esteja configurado corretamente para escutar nas portas especificadas em ocelot.json . Você pode configurar isso em Properties/launchSettings.json .

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

Agora, execute seu aplicativo e você deverá conseguir enviar conteúdo HTML para http://localhost:5000/generatepdf e receber um PDF como resposta.

Ocelot .NET (Como funciona para desenvolvedores): Figura 4

Este exemplo demonstra uma implementação básica do Ocelot com o IronPDF dentro da mesma aplicação. Para cenários de produção, considere proteger seus endpoints, lidar com situações de erro e otimizar o processo de geração de PDFs com base em seus requisitos específicos.

Conclusão

Ocelot .NET (Como funciona para desenvolvedores): Figura 5 - Página de licenciamento do IronPDF

Em conclusão, o Ocelot é uma excelente escolha para gerenciar e rotear requisições em uma arquitetura de microsserviços. Suas funcionalidades robustas, como roteamento, balanceamento de carga, suporte a middleware e autenticação, fazem dele uma ferramenta poderosa para qualquer desenvolvedor .NET . Seguindo os passos detalhados fornecidos, você poderá integrar o Ocelot aos seus projetos .NET de forma eficaz e otimizar suas necessidades de API Gateway.

Além disso, se você precisar de recursos de geração de PDF, a integração do IronPDF com o Ocelot é simples e aprimora a funcionalidade do seu aplicativo. O IronPDF oferece um período de teste gratuito e licenças a partir de uma solução econômica para suas necessidades de PDF.

Ao utilizar o Ocelot e o IronPDF em conjunto, você pode construir uma infraestrutura de microsserviços abrangente e eficiente que atenda aos requisitos de roteamento e geração de documentos.

Perguntas frequentes

Como o Ocelot pode melhorar a comunicação entre microsserviços em aplicações .NET?

O Ocelot funciona como um gateway de API, facilitando o roteamento e o gerenciamento eficientes de solicitações HTTP em vários microsserviços em uma aplicação .NET. Ele oferece recursos como roteamento, balanceamento de carga e autenticação para otimizar a comunicação entre os serviços.

Quais são os benefícios de usar o Ocelot com o IronPDF?

A integração do Ocelot com o IronPDF permite que os desenvolvedores direcionem solicitações de geração de PDF de forma eficiente dentro de um aplicativo .NET. O IronPDF garante que as conversões de HTML para PDF mantenham os layouts e estilos originais, tornando-o ideal para gerar conteúdo baseado na web, como relatórios e faturas.

Como configurar o Ocelot para balanceamento de carga?

O Ocelot suporta diversas estratégias de balanceamento de carga, incluindo Round Robin e Menor Conexão, que podem ser configuradas por meio de um arquivo JSON geralmente chamado ocelot.json . Isso garante uma distribuição uniforme do tráfego entre os microsserviços.

Qual o papel do middleware na arquitetura do Ocelot?

O middleware no Ocelot permite que os desenvolvedores insiram manipuladores personalizados para processar solicitações e respostas. Isso é útil para tarefas como adicionar cabeçalhos, registrar logs ou modificar respostas, aumentando a flexibilidade e a funcionalidade do gateway de API.

Como configurar o Ocelot em um projeto .NET?

Para configurar o Ocelot em um projeto .NET, instale o pacote Ocelot via NuGet e, em seguida, configure-o adicionando os serviços do Ocelot na classe Program e definindo as rotas em um arquivo de configuração. Essa configuração facilita o roteamento e o gerenciamento de solicitações de API.

Quais estratégias o Ocelot utiliza para gerenciar o roteamento?

O Ocelot utiliza roteamento orientado por configuração, especificado em um arquivo ocelot.json , para direcionar as solicitações do gateway de API aos serviços downstream apropriados. Ele oferece suporte a roteamento curinga e mecanismos de descoberta de serviços para configurações de roteamento flexíveis.

Como a Ocelot garante o acesso seguro à API?

O Ocelot integra-se com provedores de autenticação como o Identity Server e oferece suporte aos esquemas JWT e OAuth2, permitindo acesso seguro à API por meio do controle de permissões do usuário e da garantia da proteção do endpoint.

O Ocelot pode ser usado para otimizar fluxos de trabalho de geração de PDFs?

Sim, o Ocelot pode encaminhar solicitações para serviços específicos dedicados à geração de PDFs, como aqueles que utilizam o IronPDF. Essa configuração otimiza os fluxos de trabalho de PDF, lidando com as solicitações de forma eficiente e preservando a fidelidade do documento durante a conversão.

Como o Ocelot se integra aos mecanismos de descoberta de serviços?

O Ocelot oferece suporte à integração com mecanismos de descoberta de serviços como Consul e Eureka, o que permite rotear solicitações dinamicamente com base no estado atual dos serviços. Essa integração simplifica o gerenciamento de serviços em uma arquitetura de microsserviços.

Curtis Chau
Redator Técnico

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais ...

Leia mais

Equipe de suporte de ferro

Estamos online 24 horas por dia, 5 dias por semana.
Bater papo
E-mail
Liga para mim