Saltar al pie de página
.NET AYUDA

Ocelot .NET (Cómo Funciona para Desarrolladores)

Ocelot API Gateway es una biblioteca .NET que implementa el patrón de gateway de API comúnmente utilizado en gateways de API para manejar solicitudes a través de múltiples microservicios. Actúa como un gateway de API ligero, enruta las solicitudes de los clientes a los servicios subyacentes. Este artículo proporciona una visión detallada de cómo el gateway de API Ocelot se sitúa entre los clientes y los servicios subyacentes, cubriendo su instalación, configuración, características clave y ejemplos prácticos para demostrar sus capacidades. También exploraremos IronPDF Overview y Ocelot API combinados.

¿Qué es Ocelot .NET?

Ocelot .NET (Cómo Funciona Para Desarrolladores): Figura 1 - Página principal de Ocelot .NET

Ocelot es una solución de gateway de API de código abierto para aplicaciones .NET, diseñada para facilitar la enrutación de solicitudes a través de múltiples microservicios. Actúa como un proxy inverso, gestionando las solicitudes HTTP de los clientes y enrutándolas a los servicios adecuados en un entorno ASP.NET Core. Desarrollado en ASP.NET Core, Ocelot se integra perfectamente con el ecosistema .NET, ofreciendo un conjunto robusto de características cruciales para aplicaciones modernas.

Características principales de Ocelot

Enrutamiento

En el núcleo de la funcionalidad de Ocelot está su capacidad de enrutamiento. Coincide las solicitudes entrantes con las rutas de servicio adecuadas según la configuración especificada por los desarrolladores y puede integrarse con mecanismos de descubrimiento de servicios. Esto incluye soporte para enrutamiento de comodín, que es particularmente útil al tratar con versiones de API variables o numerosos puntos finales de servicio.

Middleware / Manejadores delegados

Ocelot permite a los desarrolladores inyectar middleware o manejadores personalizados que pueden procesar solicitudes y respuestas antes de que lleguen al cliente o al servicio. Esto es útil para agregar encabezados, registrar solicitudes o incluso modificar la estructura de la respuesta según sea necesario.

Equilibrio de carga

Ocelot admite una variedad de estrategias de balanceo de carga de forma predeterminada, como Round Robin, Conexión Mínima y un proveedor personalizado si ninguna de las estrategias predefinidas se ajusta a los requisitos. Esta característica garantiza que la carga se distribuya equitativamente entre los servicios disponibles, mejorando la resiliencia y eficiencia general de la aplicación.

Autenticación y autorización

Asegurar los puntos finales de la API es crítico, y Ocelot proporciona soporte para integrarse con los proveedores de autenticación existentes, como Identity Server. Admite esquemas de autenticación populares, incluyendo JWT y OAuth2, y permite un control detallado sobre el acceso de los usuarios a los servicios.

Limitación de velocidad y calidad de servicio

La limitación de tasa es esencial para prevenir el abuso y asegurar el uso adecuado de los servicios al limitar la cantidad de solicitudes que un usuario puede hacer en un período determinado. Las opciones de Calidad de Servicio (QoS) como el establecimiento de límites de tiempo y reintentos aseguran que los servicios permanezcan disponibles y respondan bajo diversas condiciones de red y cargas.

Cómo configurar Ocelot en un proyecto .NET

Para integrar Ocelot en tu proyecto, necesitas instalar el paquete Ocelot a través de NuGet y configurarlo en la clase Program:

dotnet add package Ocelot

Ocelot .NET (Cómo Funciona Para Desarrolladores): Figura 2 - Instalar Ocelot .NET a través de NuGet Package Manager

Configura los servicios, incluyendo el middleware del constructor de solicitudes, en tu clase Startup.cs o Program.cs para configurar el contenedor de servicios:

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

Configuración de rutas en Ocelot

Ocelot utiliza un archivo de configuración, típicamente ocelot.json, para definir las reglas de enrutamiento. Aquí hay un ejemplo más complejo que demuestra configuraciones de múltiples rutas:

{
    "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 configuración especifica cómo las solicitudes al gateway de API se enrutan a diferentes servicios subyacentes basándose en el camino y el método HTTP, utilizando el archivo JSON para configuración.

Utilización de IronPDF con Ocelot .NET

Ocelot .NET (Cómo Funciona Para Desarrolladores): Figura 3 - Página principal de IronPDF

Combinar Ocelot con la Conversión de HTML a PDF de IronPDF en una aplicación .NET ofrece una solución poderosa donde puedes enrutar solicitudes de generación de PDF a un servicio específico o manejarlas internamente. Aquí, te guiaré a través de la configuración de una aplicación .NET Core básica que usa Ocelot como un Gateway de API e IronPDF para generar PDFs desde HTML.

IronPDF se destaca en la conversión de HTML a PDF, asegurando la preservación precisa de los diseños y estilos originales. Es perfecto para crear PDFs a partir de contenido basado en la web como informes, facturas y documentación. Con soporte para archivos HTML, URLs y cadenas HTML en bruto, IronPDF produce fácilmente documentos PDF de alta calidad.

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

Paso 1: Configurar la aplicación web .NET Core

Primero, crea un nuevo proyecto de API Web .NET Core. Puedes hacerlo usando la CLI de .NET o Visual Studio.

Usando la CLI de .NET:

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

Paso 2: Añadir los paquetes necesarios

Necesitas instalar Ocelot e IronPDF. Puedes agregar estos paquetes vía NuGet.

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

Paso 3: Configurar Ocelot

Agrega un archivo ocelot.json a la raíz de tu proyecto con el siguiente contenido para configurar el enrutamiento de Ocelot. Esta configuración asume que quieres que Ocelot enroute las solicitudes de generación de PDF a un camino específico que será manejado por IronPDF dentro de la misma aplicación.

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

Paso 4: Configurar Startup.cs

Actualiza Startup.cs para incluir el middleware de Ocelot. Asegúrate de configurar también tu aplicación para usar archivos estáticos, ya que IronPDF puede necesitar cargar archivos desde el sistema de archivos 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();
    }
}
$vbLabelText   $csharpLabel

Paso 5: Implementar la generación de PDF con IronPDF

Crea un nuevo controlador PdfController.cs en tu carpeta de Controllers. Este controlador manejará las solicitudes de generación 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");
        }
    }
}
$vbLabelText   $csharpLabel

Paso 6: Ejecutar la aplicación

Asegúrate de que tu aplicación esté correctamente configurada para escuchar en los puertos especificados en ocelot.json. Puedes establecer esto en Properties/launchSettings.json.

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

Ahora, ejecuta tu aplicación y deberías poder enviar contenido HTML a http://localhost:5000/generatepdf y recibir un PDF como respuesta.

Ocelot .NET (Cómo Funciona Para Desarrolladores): Figura 4

Este ejemplo muestra una implementación básica de Ocelot con IronPDF dentro de la misma aplicación. Para escenarios de producción, considera asegurar tus puntos finales, manejar escenarios de error y optimizar el proceso de generación de PDF según tus necesidades específicas.

Conclusión

Ocelot .NET (Cómo Funciona Para Desarrolladores): Figura 5 - Página de licencias de IronPDF

En conclusión, Ocelot es una excelente opción para gestionar y enrutar solicitudes en una arquitectura de microservicios. Sus características robustas como enrutamiento, balanceo de carga, soporte de middleware y autenticación lo hacen una herramienta poderosa para cualquier desarrollador .NET. Siguiendo los pasos detallados proporcionados, puedes integrar eficazmente Ocleot en tus proyectos .NET para optimizar tus necesidades de Gateway de API.

Además, si necesitas capacidades de generación de PDF, integrar IronPDF con Ocelot es sencillo y mejora la funcionalidad de tu aplicación. IronPDF ofrece una prueba gratuita y las licencias comienzan desde una solución rentable para tus necesidades de PDF.

Al aprovechar Ocelot e IronPDF juntos, puedes construir una infraestructura de microservicios completa y eficiente que cumpla con los requisitos tanto de enrutamiento como de generación de documentos.

Preguntas Frecuentes

¿Cómo puede Ocelot mejorar la comunicación de microservicios en aplicaciones .NET?

Ocelot actúa como un gateway API, facilitando el enrutamiento eficiente y la gestión de solicitudes HTTP a través de múltiples microservicios en una aplicación .NET. Ofrece características como enrutamiento, balanceo de carga y autenticación para agilizar la comunicación entre servicios.

¿Cuáles son los beneficios de usar Ocelot con IronPDF?

Integrar Ocelot con IronPDF permite a los desarrolladores enrutar eficientemente las solicitudes de generación de PDF dentro de una aplicación .NET. IronPDF asegura que las conversiones de HTML a PDF mantengan los diseños y estilos originales, lo que lo hace ideal para generar contenido web como informes y facturas.

¿Cómo se configura Ocelot para el balanceo de carga?

Ocelot admite diversas estrategias de balanceo de carga, incluyendo Round Robin y Least Connection, que pueden configurarse mediante un archivo JSON generalmente llamado ocelot.json. Esto asegura una distribución uniforme del tráfico a través de microservicios.

¿Qué papel desempeña el middleware en la arquitectura de Ocelot?

El middleware en Ocelot permite a los desarrolladores insertar manejadores personalizados para procesar solicitudes y respuestas. Esto es útil para tareas como agregar encabezados, registros o modificar respuestas, mejorando la flexibilidad y funcionalidad del gateway API.

¿Cómo puedes configurar Ocelot en un proyecto .NET?

Para configurar Ocelot en un proyecto .NET, instala el paquete Ocelot a través de NuGet, luego configúralo agregando servicios de Ocelot en la clase Program y definiendo rutas en un archivo de configuración. Esta configuración facilita el enrutamiento y la gestión de solicitudes API.

¿Qué estrategias usa Ocelot para manejar el enrutamiento?

Ocelot utiliza enrutamiento impulsado por configuración, especificado en un archivo ocelot.json, para dirigir solicitudes desde el gateway API a los servicios correspondientes. Admite enrutamiento dinámico y mecanismos de descubrimiento de servicios para configuraciones de enrutamiento flexibles.

¿Cómo asegura Ocelot el acceso seguro a APIs?

Ocelot se integra con proveedores de autenticación como Identity Server y admite esquemas JWT y OAuth2, permitiendo un acceso seguro a APIs al controlar los permisos de los usuarios y asegurar la protección de los puntos finales.

¿Puede Ocelot optimizar los flujos de trabajo de generación de PDF?

Sí, Ocelot puede dirigir solicitudes a servicios específicos dedicados a la generación de PDF, como aquellos que usan IronPDF. Esta configuración optimiza los flujos de trabajo de PDF al manejar eficientemente las solicitudes y preservar la fidelidad del documento durante la conversión.

¿Cómo se integra Ocelot con mecanismos de descubrimiento de servicios?

Ocelot admite la integración con mecanismos de descubrimiento de servicios como Consul y Eureka, lo que le permite enrutar dinámicamente las solicitudes en base al estado actual de los servicios. Esta integración simplifica la gestión de servicios en una arquitectura de microservicios.

Jacob Mellor, Director de Tecnología @ Team Iron
Director de Tecnología

Jacob Mellor es Director de Tecnología en Iron Software y un ingeniero visionario que lidera la tecnología PDF en C#. Como el desarrollador original detrás de la base de código central de Iron Software, ha moldeado la arquitectura de productos de la compañía desde ...

Leer más