AYUDA .NET

Quartz .NET (Cómo funciona para desarrolladores)

Actualizado julio 1, 2024
Compartir:

Introducción a Quartz.NET

Para las aplicaciones .NET, Quartz.NET es un popular conjunto de herramientas de programación de tareas de código abierto. Proporciona a los programadores una base sólida para planificar y llevar a cabo trabajos, programaciones o procesos en periodos predeterminados, intervalos o en respuesta a desencadenantes. Quartz.NET facilita la construcción de complicados escenarios de programación en aplicaciones .NET, ya sea para enviar notificaciones, programar trabajos, generar informes o realizar actividades periódicas de mantenimiento. Quartz.NET es perfecto como sistema de programación de trabajos para crear desde pequeñas aplicaciones hasta sistemas empresariales a gran escala.

Quartz.NET, con su última versión del planificador, ofrece una integración perfecta con varios proveedores de bases de datos compatibles, lo que permite a los desarrolladores ampliar su funcionalidad mediante un cómodo método de extensión, al tiempo que garantiza una ejecución fiable de las tareas como servicio alojado.

La integración de Quartz.NET con IronPDF permite crear sistemas de programación fiables con potentes funciones de producción de PDF en aplicaciones .NET. Aunque IronPDF ofrece un conjunto completo de herramientas para crear, modificar y visualizar documentos PDF, Quartz.NET ofrece un sistema de programación versátil y fiable. Cuando se combinan, ofrecen a los desarrolladores la posibilidad de automatizar las operaciones de creación de PDF como parte de flujos de trabajo o programar trabajos en segundo plano, lo que mejora la utilidad y funcionalidad de sus aplicaciones.

Características principales

Horario flexible

Quartz.NET permite a los programadores crear programaciones que indican a los programas que se ejecuten a intervalos u horas predeterminados (por ejemplo, cada hora, cada día, cada 30 minutos). Es compatible con intrincados patrones de programación, como las expresiones cron, que ofrecen un control preciso de las horas a las que se ejecutan el código, los trabajos y los servicios.

Ejecución basada en activadores

En Quartz.NET, los trabajos pueden iniciarse mediante diversos disparadores. Entre ellos se incluyen los activadores basados en el calendario (que, por ejemplo, excluyen los fines de semana), desencadenantes simples (que funcionan según un horario establecido)los activadores del trabajo y los activadores a medida que dependen de circunstancias o sucesos externos.

Persistencia en el empleo

Quartz.NET tiene la capacidad de programar trabajos de forma persistente, lo que permite almacenar en una base de datos las tareas planificadas y su historial completado. Se garantiza la resistencia de la programación de trabajos frente a fallos o reinicios de la aplicación, y se posibilita la agrupación de trabajos para una alta disponibilidad y escalabilidad.

Control de concurrencia

Para garantizar que las tareas se realizan de forma segura y eficaz, Quartz.NET incorpora herramientas de control de la concurrencia. Para controlar la concurrencia de la ejecución de los trabajos, los desarrolladores pueden configurar grupos de hilos, prioridades de trabajos y restricciones de ejecución.

Encadenamiento de tareas y gestión de dependencias

Los trabajos pueden ejecutarse en un orden especificado y los desarrolladores pueden definir las relaciones entre ellos gracias a la compatibilidad de Quartz.NET con el encadenamiento de trabajos y la gestión de dependencias. Esto permite crear intrincadas situaciones de orquestación para trabajos, servicios y procedimientos en segundo plano.

Tratamiento de errores y técnicas de reintento

Para gestionar los fallos con elegancia, Quartz.NET dispone de técnicas de gestión de errores y reintentos. En caso de fallos temporales o excepciones, los desarrolladores pueden establecer políticas de reintento y técnicas de gestión de errores para garantizar que los trabajos se reintentan o se reprograman.

Agrupación y escalabilidad

Múltiples instancias del programador pueden coordinar y llevar a cabo tareas en un clúster de servidores gracias a la compatibilidad de Quartz.NET con la agrupación en clústeres en la programación de trabajos distribuidos. Esto garantiza un programador de trabajos y una ejecución fiables en un contexto distribuido al permitir la escalabilidad horizontal y la tolerancia a fallos.

Integración con el ecosistema .NET

Quartz.NET interactúa fácilmente con el ecosistema .NET, que incluye sistemas de mensajería (Rebus.NET, MassTransit)marcos de registro (Serilog, NLog)y los marcos de inyección de dependencias más conocidos (Autofac, Microsoft.Extensions.DependencyInjection).

Creación y configuración de Quartz.NET

Definir trabajos y desencadenantes

Para las tareas que desee ejecutar, establezca jobs y triggers. La tarea que debe completarse se representa mediante un objeto de contexto y una clase de trabajo, y la frecuencia y el momento de ejecución del trabajo se deciden mediante un activador.

public class MyJob : IJob
{
    public async Task Execute(IJobExecutionContext context)
    {
        // Implement the logic for your job here
    }
}

var job = JobBuilder.Create<MyJob>()
    .WithIdentity("myJob", "group1")
    .Build();

var trigger = TriggerBuilder.Create()
    .WithIdentity("myTrigger", "group1")
    .WithCronSchedule("0 0/5 * * * ?") // Run every 5 minutes
    .Build();
public class MyJob : IJob
{
    public async Task Execute(IJobExecutionContext context)
    {
        // Implement the logic for your job here
    }
}

var job = JobBuilder.Create<MyJob>()
    .WithIdentity("myJob", "group1")
    .Build();

var trigger = TriggerBuilder.Create()
    .WithIdentity("myTrigger", "group1")
    .WithCronSchedule("0 0/5 * * * ?") // Run every 5 minutes
    .Build();
Public Class MyJob
	Implements IJob

	Public Async Function Execute(ByVal context As IJobExecutionContext) As Task
		' Implement the logic for your job here
	End Function
End Class

Private job = JobBuilder.Create(Of MyJob)().WithIdentity("myJob", "group1").Build()

Private trigger = TriggerBuilder.Create().WithIdentity("myTrigger", "group1").WithCronSchedule("0 0/5 * * * ?").Build()
VB   C#

Configurar e inicializar el programador

Después de configurar el planificador de trabajos con la configuración especificada para programar tareas en segundo plano, trabajos y activadores, inicie el planificador para empezar a planificar y llevar a cabo los trabajos.

var schedulerFactory = new StdSchedulerFactory();
var scheduler = await schedulerFactory.GetScheduler();
await scheduler.Start();
await scheduler.ScheduleJob(job, trigger);
var schedulerFactory = new StdSchedulerFactory();
var scheduler = await schedulerFactory.GetScheduler();
await scheduler.Start();
await scheduler.ScheduleJob(job, trigger);
Dim schedulerFactory = New StdSchedulerFactory()
Dim scheduler = Await schedulerFactory.GetScheduler()
Await scheduler.Start()
Await scheduler.ScheduleJob(job, trigger)
VB   C#

Persistencia en el empleo

Configure Quartz.NET para almacenar trabajos y metadatos de activación en un almacén persistente, como una base de datos. Esto garantiza la fiabilidad y permite que los trabajos sobrevivan a los reinicios de la aplicación.

Tratamiento de errores

Incorpore la gestión de errores y la lógica de reintento en su lógica de ejecución de trabajos para tratar los fallos con elegancia. Quartz.NET proporciona métodos integrados para gestionar excepciones y reintentar tareas.

Agrupación

Para garantizar una alta disponibilidad y escalabilidad al utilizar Quartz.NET en un entorno distribuido, configure la agrupación en clústeres. La instancia del planificador puede colaborar y realizar tareas entre un clúster de servidores gracias a la agrupación en clústeres.

Inyección de dependencia

Configure Quartz.NET para que se comunique con su inyección de dependencias (DI) para gestionar las dependencias, la configuración y el ciclo de vida de los trabajos si su aplicación utiliza un marco de inyección de dependencias.

IronPDF

Cuarzo .NET (Cómo funciona para desarrolladores): Figura 1 - Página web de IronPDF

El conocido paquete .NET IronPDF permite crear, modificar y representar documentos PDF en programas .NET. Existen multitud de funcionalidades para interactuar con los PDF: crear PDF a partir de contenido HTML, fotos o datos sin procesar; añadir texto, imágenes y formas a documentos PDF preexistentes; convertir páginas HTML en PDF; y extraer texto e imágenes de los PDF.

La sencillez y facilidad de uso de IronPDF son dos de sus principales ventajas. Los desarrolladores pueden empezar fácilmente a generar archivos PDF en sus proyectos .NET gracias a su API fácil de usar y a su amplia documentación. La velocidad y eficacia de IronPDF son otras características que permiten a los desarrolladores producir documentos PDF de alta calidad de forma rápida y eficaz.

Características principales de IronPDF

  • Creación de PDF a partir de datos sin procesar, HTML e imágenes.
  • Extraer texto e imágenes de archivos PDF.
  • Permite incluir encabezados, pies de página y marcas de agua en archivos PDF.
  • Cree documentos PDF con seguridad de contraseña y cifrado.
  • Proporciona herramientas para rellenar formularios y firmar digitalmente.

Uso del cuarzo con IronPDF

Para empezar a utilizar IronPDF con Quartz.NET en una aplicación de consola o ASP.NET Core, puede utilizar IronPDF para establecer un trabajo en segundo plano programado que ejecute tareas relacionadas con la producción de PDF.

Instalación de los paquetes Quartz y IronPDF

En primer lugar, asegúrese de que ha instalado los paquetes NuGet necesarios para IronPDF y Quartz.NET en su proyecto .NET con la consola del gestor de paquetes de Visual Studio mediante los siguientes comandos:

Install-Package Quartz
Install-Package IronPdf
Install-Package Quartz
Install-Package IronPdf
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'Install-Package Quartz Install-Package IronPdf
VB   C#

Ejemplo de código

En esta sección se muestra cómo realizar un trabajo de Quartz que utilice IronPDF para crear documentos PDF.

public class PdfGenerationJob : IJob
{
    public async Task Execute(IJobExecutionContext context)
    {
        // Generate PDF using IronPDF
        var htmlContent = "<h1>Hello, IronPDF!</h1>";
        var pdfRenderer = new IronPdf.HtmlToPdf();
        var pdfDocument = pdfRenderer.RenderHtmlAsPdf(htmlContent);
        // Save PDF to file or perform other actions
        pdfDocument.SaveAs("output.pdf");
    }
}
public class PdfGenerationJob : IJob
{
    public async Task Execute(IJobExecutionContext context)
    {
        // Generate PDF using IronPDF
        var htmlContent = "<h1>Hello, IronPDF!</h1>";
        var pdfRenderer = new IronPdf.HtmlToPdf();
        var pdfDocument = pdfRenderer.RenderHtmlAsPdf(htmlContent);
        // Save PDF to file or perform other actions
        pdfDocument.SaveAs("output.pdf");
    }
}
Public Class PdfGenerationJob
	Implements IJob

	Public Async Function Execute(ByVal context As IJobExecutionContext) As Task
		' Generate PDF using IronPDF
		Dim htmlContent = "<h1>Hello, IronPDF!</h1>"
		Dim pdfRenderer = New IronPdf.HtmlToPdf()
		Dim pdfDocument = pdfRenderer.RenderHtmlAsPdf(htmlContent)
		' Save PDF to file or perform other actions
		pdfDocument.SaveAs("output.pdf")
	End Function
End Class
VB   C#

Configure Quartz.NET para que utilice un activador para ejecutar el proceso de creación de PDF en un horario predeterminado.

var schedulerFactory = new StdSchedulerFactory();
var scheduler = await schedulerFactory.GetScheduler();
await scheduler.Start();

var job = JobBuilder.Create<PdfGenerationJob>()
    .WithIdentity("pdfGenerationJob", "pdfGenerationGroup")
    .Build();

var trigger = TriggerBuilder.Create()
    .WithIdentity("pdfGenerationTrigger", "pdfGenerationGroup")
    .WithSimpleSchedule(x => x
        .WithIntervalInMinutes(30) // Run every 30 minutes
        .RepeatForever())
    .Build();

await scheduler.ScheduleJob(job, trigger);
var schedulerFactory = new StdSchedulerFactory();
var scheduler = await schedulerFactory.GetScheduler();
await scheduler.Start();

var job = JobBuilder.Create<PdfGenerationJob>()
    .WithIdentity("pdfGenerationJob", "pdfGenerationGroup")
    .Build();

var trigger = TriggerBuilder.Create()
    .WithIdentity("pdfGenerationTrigger", "pdfGenerationGroup")
    .WithSimpleSchedule(x => x
        .WithIntervalInMinutes(30) // Run every 30 minutes
        .RepeatForever())
    .Build();

await scheduler.ScheduleJob(job, trigger);
Dim schedulerFactory = New StdSchedulerFactory()
Dim scheduler = Await schedulerFactory.GetScheduler()
Await scheduler.Start()

Dim job = JobBuilder.Create(Of PdfGenerationJob)().WithIdentity("pdfGenerationJob", "pdfGenerationGroup").Build()

Dim trigger = TriggerBuilder.Create().WithIdentity("pdfGenerationTrigger", "pdfGenerationGroup").WithSimpleSchedule(Function(x) x.WithIntervalInMinutes(30).RepeatForever()).Build()

Await scheduler.ScheduleJob(job, trigger)
VB   C#

Para iniciar el programador Quartz y comenzar a realizar las tareas planificadas:

// Start the scheduler
await scheduler.Start();
// Optionally, monitor scheduler for job execution
// Start the scheduler
await scheduler.Start();
// Optionally, monitor scheduler for job execution
' Start the scheduler
Await scheduler.Start()
' Optionally, monitor scheduler for job execution
VB   C#

A continuación se muestra la salida generada a partir del código anterior.

Cuarzo .NET (Cómo funciona para desarrolladores): Figura 2 - Salida del ejemplo de código IronPDF y Quartz.NET

Conclusión

En resumen, la combinación de Quartz.NET y IronPDF proporciona una forma sólida de automatizar las operaciones relacionadas con la creación de PDF en aplicaciones .NET. Con la ayuda del potente y adaptable sistema de programación de Quartz.NET, los desarrolladores pueden crear trabajos y disparadores que llevarán a cabo actividades a intervalos o duraciones predeterminados. IronPDF, por su parte, ofrece a los desarrolladores todas las herramientas que necesitan para crear y trabajar con documentos PDF. Utilizando HTML, gráficos o datos sin procesar, los desarrolladores pueden crear PDF de aspecto profesional.

Los desarrolladores pueden automatizar operaciones típicas de generación de PDF en aplicaciones distribuidas, como la creación de informes, facturas o documentos, a intervalos predeterminados o como reacción a disparadores, integrando la funcionalidad de generación de PDF de IronPDF con las capacidades de programación de Quartz.NET. Esta integración permite a los desarrolladores producir y enviar más fácilmente documentos PDF de alta calidad a sus clientes, agilizando los flujos de trabajo de generación de documentos, aumentando la productividad y reduciendo el trabajo manual.

IronPDF tiene un precio razonable e incluye una licencia de por vida si se adquiere como parte del paquete. Dado que el paquete sólo cuesta 749 dólares, lo que supone un único cargo para varios sistemas, ofrece un valor excepcional. Ofrece asistencia de ingeniería en línea las 24 horas del día a los titulares de licencias. Para obtener más información sobre los productos fabricados por Iron Software, visite esta página.

< ANTERIOR
tye .NET (Cómo funciona para desarrolladores)
SIGUIENTE >
Ejemplo de Supersocket en C# (Cómo funciona para desarrolladores)

¿Listo para empezar? Versión: 2024.9 acaba de salir

Descarga gratuita de NuGet Descargas totales: 10,516,730 View Licenses >