IRONSOFTWAREHOME
ACTUALIZACIONES PARA DESARROLLADORES

Hangfire .NET Core (Cómo funciona para desarrolladores)

Jacob Mellor, Director de Tecnología @ Team Iron
Jacob Mellor
Updated: 21 de abril de 2026

El desarrollo moderno de aplicaciones a menudo requiere procesar tareas en segundo plano para manejar grandes cargas de trabajo. En tales escenarios, necesitamos manejadores de trabajos en segundo plano capaces de ejecutar múltiples trabajos. Uno de esos manejadores de trabajos en segundo plano para aplicaciones C# .NET Core es Hangfire. En este blog, vamos a aprender sobre la gestión de trabajos en segundo plano de Hangfire y cómo usarlos con otros paquetes como IronPDF for PDF Generation para generar documentos PDF en segundo plano.

Hangfire simplifica la implementación del procesamiento en segundo plano en aplicaciones ASP.NET Core o .NET Core 6 Web API proporcionando un marco confiable y flexible para gestionar y ejecutar trabajos en segundo plano. Hangfire está disponible como un paquete NuGet y puede ser instalado utilizando el .NET CLI como se muestra a continuación:

dotnet add package Hangfire --version 1.8.6

Implementación en .NET Core Web API

Para aprender sobre Hangfire, creemos una aplicación API simple de .NET Core e instalemos Hangfire usando el CLI.

dotnet new webapi -n HangfireDemo
cd HangfireDemo
dotnet build
dotnet add package Hangfire --version 1.8.6
dotnet build
SHELL

Aquí estamos creando una API REST simple de clima usando .NET CLI. La primera línea crea un proyecto de API Web .NET Core llamado HangfireDemo para ejecutar endpoints de API. La segunda línea navega a nuestra carpeta recién creada "HangfireDemo," y luego construimos el proyecto. A continuación, agregamos el paquete NuGet de Hangfire a nuestro proyecto y lo reconstruimos. Después de esto, puedes abrir tu proyecto en cualquier editor de tu elección, como Visual Studio 2022 o JetBrains Rider. Ahora si ejecutas el proyecto, puedes ver a Swagger de la siguiente manera:

Hangfire .NET Core (Cómo Funciona para Desarrolladores): Figura 1 - Swagger

Aquí podemos ver las APIs GET de clima, que devuelven fecha, resumen y temperatura.

Hangfire .NET Core (Cómo Funciona para Desarrolladores): Figura 2 - API GET del clima

Ahora agreguemos un procesador de trabajos en segundo plano Hangfire. Abre el proyecto en Visual Studio.

Añadir procesador de trabajos Hangfire

Configure Hangfire en su aplicación, típicamente en el archivo Startup.cs. Esto implica configurar un almacenamiento de trabajo e inicializar el servidor de Hangfire.

// Startup.cs
using Hangfire;

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        // Add Hangfire services and use SQL Server as storage option
        services.AddHangfire(config => config.UseSqlServerStorage("your_connection_string"));
        services.AddHangfireServer();
    }
    
    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        // Use Hangfire Server and Dashboard for monitoring and managing jobs
        app.UseHangfireServer();
        app.UseHangfireDashboard();
        // Your other configuration settings
    }
}

El método ConfigureServices se utiliza para agregar almacenamiento para guardar los trabajos recién creados de Hangfire. Aquí se utiliza una base de datos SQL Server. La cadena de conexión de SQL Server debe ser reemplazada con "your_connection_string". También se puede usar almacenamiento en memoria con Hangfire.InMemory.

dotnet add package Hangfire.InMemory --version 0.6.0

Y reemplazar con:

services.AddHangfire(configuration => { configuration.UseInMemoryStorage(); });

Crear trabajos de fondo

Define los métodos que deseas ejecutar como trabajos en segundo plano. Estos métodos deben ser estáticos o métodos de instancia de una clase con un constructor sin parámetros. Los trabajos pueden ejecutarse como trabajos recurrentes, o puedes ejecutar múltiples trabajos simultáneamente.

public class MyBackgroundJob
{
    public void ProcessJob()
    {
        // Background job logic, can be a recurring job or multiple jobs
        Console.WriteLine("Background job is running...");
    }
}

Trabajos en cola

Encola trabajos en segundo plano usando la API de Hangfire. Puedes programar trabajos en segundo plano para que se ejecuten a una hora específica, después de un retraso, o de manera regular.

// Enqueue a job to run immediately
BackgroundJob.Enqueue<MyBackgroundJob>(x => x.ProcessJob());

// Schedule a job to run after a 5-minute delay
BackgroundJob.Schedule<MyBackgroundJob>(x => x.ProcessJob(), TimeSpan.FromMinutes(5));

// Schedule a recurring job using a job ID
RecurringJob.AddOrUpdate<MyBackgroundJob>("jobId", x => x.ProcessJob(), Cron.Daily);

Panel y servidor de Hangfire

El panel de Hangfire y el servidor pueden ser añadidos en el método Configure para la monitorización en tiempo real de trabajos.

// Run Hangfire server and dashboard
app.UseHangfireServer();
app.UseHangfireDashboard();

El servidor también se puede agregar en ConfigureServices.

services.AddHangfireServer();

Descarga y olvida trabajos

// Fire and forget jobs are executed only once and almost immediately after creation.
var jobId = BackgroundJob.Enqueue(() => Console.WriteLine("Fire-and-forget!")); // Job ID for fire and forget job

Trabajos recurrentes

// Recurring jobs fire many times based on a specified CRON schedule.
RecurringJob.AddOrUpdate("myrecurringjob", () => Console.WriteLine("Recurring!"), Cron.Daily);

Trabajos atrasados

// Delayed jobs are executed only once but after a specified interval.
var jobId = BackgroundJob.Schedule(() => Console.WriteLine("Delayed!"), TimeSpan.FromDays(7));

Continuaciones

// Continuation jobs are executed once their parent jobs have completed.
BackgroundJob.ContinueJobWith(jobId, () => Console.WriteLine("Continuation!"));

Trabajo por lotes

// Batch is a group of background jobs created atomically and considered as a single entity.
var batchId = BatchJob.StartNew(x =>
{
    x.Enqueue(() => Console.WriteLine("Job 1"));
    x.Enqueue(() => Console.WriteLine("Job 2"));
});

Trabajo de continuación de lotes

// Batch continuation is fired when all background jobs in a parent batch are finished.
BatchJob.ContinueBatchWith(batchId, x =>
{
    x.Enqueue(() => Console.WriteLine("Last Job"));
});

Panel de control

El Dashboard de Hangfire es donde puedes encontrar toda la información sobre tus trabajos en segundo plano. Está escrito como un middleware OWIN (si no estás familiarizado con OWIN, no te preocupes), así puedes conectarlo a tus aplicaciones ASP.NET, ASP.NET MVC, Nancy y ServiceStack, así como usar la función OWIN Self-Host para hospedar el Dashboard dentro de Aplicaciones de Consola o Servicios de Windows.

Cuando tiene habilitado el panel, está disponible en la extensión /hangfire/. En este dashboard, puedes gestionar trabajos en ejecución en segundo plano, programar trabajos en segundo plano y ver trabajos de 'fuego y olvido' junto con trabajos recurrentes. Los trabajos pueden identificarse usando un ID de trabajo.

Procesamiento en vivo

Hangfire .NET Core (Cómo Funciona para Desarrolladores): Figura 3 - Procesamiento en Vivo de Trabajos

Trabajos realizados

Ver trabajos exitosos a continuación.

Hangfire .NET Core (Cómo Funciona para Desarrolladores): Figura 4 - Trabajos Exitosos

Trabajos programados

Hangfire .NET Core (Cómo Funciona para Desarrolladores): Figura 5 - Trabajos Programados

Cuando tu aplicación se ejecuta, Hangfire se encargará de procesar los trabajos en segundo plano según la configuración establecida.

Recuerda revisar la documentación de Hangfire para más opciones de configuración avanzadas y características: Hangfire Documentación y el código completo se puede encontrar en GitHub Hangfire Demo.

Presentación de IronPDF

IronPDF for .NET PDF Generation es un paquete NuGet de la Biblioteca de PDF de Iron Software que ayuda a leer y generar documentos PDF. Puede convertir fácilmente documentos formateados con información de estilo a PDF. IronPDF puede generar fácilmente PDFs a partir de contenido HTML. Puede descargar el HTML desde la URL y luego generar PDFs.

La principal atracción de IronPDF es su función de Conversión de HTML a PDF, que preserva los diseños y estilos. Puede crear PDFs a partir de contenido web, ideal para informes, facturas y documentación. Domina PDFs con IronPDF, biblioteca C# que simplifica el trabajo con PDFs.

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

Comienza con IronPDF

Instalar la biblioteca IronPDF

Instalación mediante el gestor de paquetes NuGet

Para integrar IronPDF en tu proyecto .NET de Hangfire usando el Gestor de Paquetes NuGet, sigue estos pasos:

  1. Abre Visual Studio y en el Explorador de Soluciones, haz clic derecho sobre tu proyecto.
  2. Elige "Gestionar Paquetes NuGet…" desde el menú contextual.
  3. Ve a la pestaña Buscar y busca IronPDF.
  4. Selecciona la biblioteca IronPDF de los resultados de búsqueda y haz clic en el botón Instalar.
  5. Acepta cualquier mensaje de acuerdo de licencia.

Si prefieres usar la Consola del Gestor de Paquetes, ejecuta el siguiente comando:

PM > Install-Package IronPdf

Esto buscará e instalará IronPDF en tu proyecto.

Instalación mediante el sitio web de NuGet

Para una descripción detallada de IronPDF, incluidas características, compatibilidad y opciones de descarga adicionales, visita la página de IronPDF en el sitio web de NuGet en https://www.nuget.org/packages/IronPdf.

Instalación mediante DLL

Alternativamente, puedes incorporar IronPDF directamente en tu proyecto usando su archivo DLL. Descarga el archivo ZIP que contiene la DLL desde este Descarga Directa de IronPDF. Descomprímelo e incluye la DLL en tu proyecto.

Ahora vamos a modificar nuestra aplicación para añadir un trabajo de procesamiento en segundo plano para descargar un sitio web como un archivo PDF.

namespace HangfireDemo.Core;

public class PdfGenerationJob
{
    public void Start(string website)
    {
        // Create a PDF from any existing web page
        ChromePdfRenderer renderer = new ChromePdfRenderer();
        PdfDocument pdf = renderer.RenderUrlAsPdf(website);
        var filePath = AppContext.BaseDirectory + "result.pdf";
        pdf.SaveAs(filePath);
    }
}

IronPDF tiene un método incorporado para descargar un sitio web desde una URL y guardarlo como documento PDF. Vamos a usar este método en nuestro trabajo para descargar y guardar en una ubicación especificada. Este trabajo en segundo plano puede modificarse para tomar múltiples URLs de sitios web y guardarlas como PDFs.

Ahora, agreguemos un controlador para exponer las APIs de generación y descarga de PDF.

using Hangfire;
using HangfireDemo.Core;
using Microsoft.AspNetCore.Mvc;

namespace HangfireDemo.Controllers;

[ApiController]
[Route("[controller]")]
public class PdfGeneratorController : ControllerBase
{
    [HttpGet("request", Name = "Start PDF Generation")]
    public void Start([FromQuery] string websiteUrl)
    {
        BackgroundJob.Enqueue<PdfGenerationJob>(x => x.Start(websiteUrl));
    }

    [HttpGet("result", Name = "Download PDF Generation")]
    public IActionResult WebResult()
    {
        var filePath = AppContext.BaseDirectory + "result.pdf";
        var stream = new FileStream(filePath, FileMode.Open);
        return new FileStreamResult(stream, "application/octet-stream") { FileDownloadName = "website.pdf" };
    }
}

Aquí hemos creado dos APIs: una para iniciar el trabajo en segundo plano y tomar la URL del sitio web para iniciar la descarga, y otra API para descargar el PDF resultante. Las APIs se describen como se muestra a continuación.

Hangfire .NET Core (Cómo Funciona para Desarrolladores): Figura 7 - APIs de PDFGenerator

Y el resultado se ve así:

Hangfire .NET Core (Cómo Funciona para Desarrolladores): Figura 8 - Salida

Licencia (Prueba gratuita disponible)

Para que el código anterior funcione sin marcas de agua, se requiere una clave de licencia. Una licencia de prueba está disponible para desarrolladores al registrarse en IronPDF Free Trial. No se necesita una tarjeta de crédito para una licencia de prueba. Puedes proporcionar tu ID de correo electrónico y registrarte para una prueba gratuita.

Conclusión

Hangfire e IronPDF juntos son una gran combinación para generar y descargar PDFs en segundo plano. Hangfire permite un procesamiento eficiente de tareas de larga duración, mientras que IronPDF proporciona una solución flexible y fácil de usar para la generación de PDF. Para aprender más sobre IronPDF, puedes visitar la Documentación de IronPDF.

Además, explora otras herramientas de la Iron Software Product Suite que pueden mejorar tus habilidades de codificación y cumplir con los requisitos modernos de aplicaciones.

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

Jacob Mellor es Director de Tecnología de Iron Software y un ingeniero visionario pionero en la tecnología C# PDF. Como desarrollador original de la base de código principal de Iron Software, ha dado forma a la arquitectura de productos de la empresa desde su creación, transformándola, junto con el director ejecutivo Cameron Rimington, en una empresa de más de 50 personas que presta servicios a la NASA, Tesla y organismos gubernamentales de todo el mundo.

...
Leer más

Artículos Relacionados

Key in blue circle

Obtenga su clave de prueba gratuita de 30 días al instante.

Your trial license will be sent to your email address

Sin limitaciones. 100 % desbloqueado. Sin tarjeta de crédito.

bullet_checkedNo se requiere tarjeta de crédito ni creación de cuentaSin limitaciones. 100 % desbloqueado. Sin tarjeta de crédito.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Reserve su Demostración en Vivo gratuita
Booking Badge

Confiado por millones de ingenieros en todo el mundo

Logos de clientes de Iron Software
Obtén tu Consulta Sin Compromiso
Completa el formulario a continuación o envía un correo a sales@ironsoftware.com
Tus detalles siempre serán mantenidos confidenciales.
Confiado por millones de ingenieros en todo el mundo
Logos de clientes de Iron Software
Obtenga su Clave de Prueba de 30 días gratis al instante.
No se requiere tarjeta de crédito ni creación de cuenta