Saltar al pie de página
.NET AYUDA

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

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
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 API Web de .NET Core llamado HangfireDemo para ejecutar puntos finales 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 el Desarrollador): Figura 1 - Swagger

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

Hangfire .NET Core (Cómo Funciona Para el Desarrollador): Figura 2 - Clima GET API

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

Añadir procesador de trabajos Hangfire

Configura Hangfire en tu aplicación, típicamente en el archivo Startup.cs. Esto implica configurar un almacenamiento de trabajos e inicializar el servidor 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
    }
}
// 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
    }
}
' Startup.cs
Imports Hangfire

Public Class Startup
	Public Sub ConfigureServices(ByVal services As IServiceCollection)
		' Add Hangfire services and use SQL Server as storage option
		services.AddHangfire(Function(config) config.UseSqlServerStorage("your_connection_string"))
		services.AddHangfireServer()
	End Sub

	Public Sub Configure(ByVal app As IApplicationBuilder, ByVal env As IHostingEnvironment)
		' Use Hangfire Server and Dashboard for monitoring and managing jobs
		app.UseHangfireServer()
		app.UseHangfireDashboard()
		' Your other configuration settings
	End Sub
End Class
$vbLabelText   $csharpLabel

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 por "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(); });
services.AddHangfire(configuration => { configuration.UseInMemoryStorage(); });
services.AddHangfire(Sub(configuration)
	configuration.UseInMemoryStorage()
End Sub)
$vbLabelText   $csharpLabel

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...");
    }
}
public class MyBackgroundJob
{
    public void ProcessJob()
    {
        // Background job logic, can be a recurring job or multiple jobs
        Console.WriteLine("Background job is running...");
    }
}
Public Class MyBackgroundJob
	Public Sub ProcessJob()
		' Background job logic, can be a recurring job or multiple jobs
		Console.WriteLine("Background job is running...")
	End Sub
End Class
$vbLabelText   $csharpLabel

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);
// 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);
' Enqueue a job to run immediately
BackgroundJob.Enqueue(Of MyBackgroundJob)(Function(x) x.ProcessJob())

' Schedule a job to run after a 5-minute delay
BackgroundJob.Schedule(Of MyBackgroundJob)(Function(x) x.ProcessJob(), TimeSpan.FromMinutes(5))

' Schedule a recurring job using a job ID
RecurringJob.AddOrUpdate(Of MyBackgroundJob)("jobId", Function(x) x.ProcessJob(), Cron.Daily)
$vbLabelText   $csharpLabel

Panel y servidor de Hangfire

El dashboard y servidor de Hangfire pueden añadirse en el método Configure para monitoreo de trabajos en tiempo real.

// Run Hangfire server and dashboard
app.UseHangfireServer();
app.UseHangfireDashboard();
// Run Hangfire server and dashboard
app.UseHangfireServer();
app.UseHangfireDashboard();
' Run Hangfire server and dashboard
app.UseHangfireServer()
app.UseHangfireDashboard()
$vbLabelText   $csharpLabel

El servidor también puede añadirse en ConfigureServices.

services.AddHangfireServer();
services.AddHangfireServer();
services.AddHangfireServer()
$vbLabelText   $csharpLabel

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
// 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
' Fire and forget jobs are executed only once and almost immediately after creation.
Dim jobId = BackgroundJob.Enqueue(Sub() Console.WriteLine("Fire-and-forget!")) ' Job ID for fire and forget job
$vbLabelText   $csharpLabel

Trabajos recurrentes

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

Trabajos atrasados

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

Continuaciones

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

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"));
});
// 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"));
});
' Batch is a group of background jobs created atomically and considered as a single entity.
Dim batchId = BatchJob.StartNew(Sub(x)
	x.Enqueue(Sub() Console.WriteLine("Job 1"))
	x.Enqueue(Sub() Console.WriteLine("Job 2"))
End Sub)
$vbLabelText   $csharpLabel

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"));
});
// Batch continuation is fired when all background jobs in a parent batch are finished.
BatchJob.ContinueBatchWith(batchId, x =>
{
    x.Enqueue(() => Console.WriteLine("Last Job"));
});
' Batch continuation is fired when all background jobs in a parent batch are finished.
BatchJob.ContinueBatchWith(batchId, Sub(x)
	x.Enqueue(Sub() Console.WriteLine("Last Job"))
End Sub)
$vbLabelText   $csharpLabel

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 tienes el dashboard habilitado, 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 el Desarrollador): Figura 3 - Procesamiento en Vivo de Trabajos

Trabajos realizados

Ver trabajos exitosos a continuación.

Hangfire .NET Core (Cómo Funciona Para el Desarrollador): Figura 4 - Trabajos Exitosos

Trabajos programados

Hangfire .NET Core (Cómo Funciona Para el Desarrollador): 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");
    }
}
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

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:

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);
    }
}
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);
    }
}
Namespace HangfireDemo.Core

	Public Class PdfGenerationJob
		Public Sub Start(ByVal website As String)
			' Create a PDF from any existing web page
			Dim renderer As New ChromePdfRenderer()
			Dim pdf As PdfDocument = renderer.RenderUrlAsPdf(website)
			Dim filePath = AppContext.BaseDirectory & "result.pdf"
			pdf.SaveAs(filePath)
		End Sub
	End Class
End Namespace
$vbLabelText   $csharpLabel

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" };
    }
}
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" };
    }
}
Imports Hangfire
Imports HangfireDemo.Core
Imports Microsoft.AspNetCore.Mvc

Namespace HangfireDemo.Controllers

	<ApiController>
	<Route("[controller]")>
	Public Class PdfGeneratorController
		Inherits ControllerBase

		<HttpGet("request", Name := "Start PDF Generation")>
		Public Sub Start(<FromQuery> ByVal websiteUrl As String)
			BackgroundJob.Enqueue(Of PdfGenerationJob)(Function(x) x.Start(websiteUrl))
		End Sub

		<HttpGet("result", Name := "Download PDF Generation")>
		Public Function WebResult() As IActionResult
			Dim filePath = AppContext.BaseDirectory & "result.pdf"
			Dim stream = New FileStream(filePath, FileMode.Open)
			Return New FileStreamResult(stream, "application/octet-stream") With {.FileDownloadName = "website.pdf"}
		End Function
	End Class
End Namespace
$vbLabelText   $csharpLabel

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 el Desarrollador): Figura 7 - APIs PDFGenerator

Y el resultado se ve así:

Hangfire .NET Core (Cómo Funciona Para el Desarrollador): 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.

Preguntas Frecuentes

¿Qué es Hangfire en .NET Core?

Hangfire es un marco que simplifica la implementación del procesamiento en segundo plano en aplicaciones ASP.NET Core o .NET Core 6. Proporciona una solución confiable y flexible para gestionar y ejecutar trabajos en segundo plano.

¿Cómo instalo Hangfire en una aplicación .NET Core?

Hangfire se puede instalar como un paquete NuGet. Puedes agregarlo usando la CLI de .NET con el comando: dotnet add package Hangfire --version 1.8.6.

¿Cuáles son los tipos de trabajos en segundo plano que Hangfire admite?

Hangfire admite varios tipos de trabajos en segundo plano, incluyendo trabajos de Ejecutar y olvidar, trabajos Retrasados, trabajos Recurrentes y trabajos de Continuación.

¿Cómo configuras Hangfire en una aplicación .NET Core?

Hangfire se configura en el archivo Startup.cs donde configuras el almacenamiento de trabajos e inicias el servidor Hangfire. Generalmente implica agregar servicios de Hangfire y configurar un SQL Server o almacenamiento en memoria.

¿Qué es el Panel Hangfire?

El Panel Hangfire es una herramienta para monitorear y gestionar trabajos en segundo plano. Proporciona información sobre el procesamiento en vivo, trabajos exitosos y trabajos programados, y es accesible a través de una interfaz web.

¿Cómo puedes crear un trabajo en segundo plano usando Hangfire?

Los trabajos en segundo plano pueden ser creados usando Hangfire definiendo los métodos que deseas ejecutar como trabajos y luego encolándolos usando la API de Hangfire. Los trabajos pueden programarse para ejecutarse inmediatamente, después de un retraso o de manera recurrente.

¿Cómo puedes realizar tareas de generación de PDF en segundo plano con .NET Core?

Puedes realizar tareas de generación de PDF en segundo plano utilizando una biblioteca de PDF que soporte la conversión de HTML a PDF. Esto puede integrarse en un marco de procesamiento de trabajos en segundo plano como Hangfire para automatizar la creación de PDFs a partir de contenido HTML.

¿Cuáles son algunas capacidades de una biblioteca de generación de PDF en .NET?

Una biblioteca de generación de PDF puede convertir cadenas HTML, archivos HTML y URLs a PDFs. Conserva los diseños y estilos y es útil para generar informes, facturas y documentación a partir de contenido web.

¿Cómo puedes instalar una biblioteca de generación de PDF en un proyecto .NET?

Una biblioteca de generación de PDF puede instalarse usando el Administrador de Paquetes NuGet en Visual Studio o a través de la Consola del Administrador de Paquetes con un comando específico. También puede instalarse descargando el DLL directamente desde el sitio web de la biblioteca.

¿Qué se necesita para usar una biblioteca de generación de PDF sin marcas de agua?

Para usar una biblioteca de generación de PDF sin marcas de agua, generalmente se requiere una clave de licencia. Puede estar disponible una licencia de prueba gratuita al registrarse en el sitio web de la biblioteca.

¿Cómo puedes integrar una herramienta de generación de PDF con Hangfire en .NET Core?

Puedes integrar una herramienta de generación de PDF con Hangfire en .NET Core configurando un trabajo en segundo plano que utilice la biblioteca de generación de PDF para convertir HTML a PDF. Esto permite la creación y gestión automatizada de documentos en aplicaciones.

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