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

Quartz .NET (Como funciona para desenvolvedores)

Introdução ao Quartz .NET

Para aplicações .NET , o Quartz .NET é um conjunto de ferramentas de agendamento de tarefas de código aberto bastante popular. Isso proporciona aos programadores uma base sólida para planejar e executar tarefas, cronogramas ou processos em períodos ou intervalos predeterminados, ou em resposta a gatilhos. O Quartz .NET facilita a criação de cenários de agendamento complexos em aplicações .NET , sejam eles para o envio de notificações, agendamento de tarefas, geração de relatórios ou execução de atividades de manutenção periódica. O Quartz .NET é perfeito como sistema de agendamento de tarefas para a criação de aplicações pequenas e sistemas empresariais de grande escala.

O Quartz .NET, com sua versão mais recente do agendador, oferece integração perfeita com diversos provedores de banco de dados compatíveis, permitindo que os desenvolvedores estendam sua funcionalidade usando um método de extensão conveniente, ao mesmo tempo que garante a execução confiável de tarefas como um serviço hospedado.

A integração do Quartz .NET com o IronPDF torna possível a criação de sistemas de agendamento confiáveis ​​com recursos robustos de geração de PDFs em aplicações .NET . Embora o IronPDF ofereça um conjunto completo de ferramentas para criar, modificar e exibir documentos PDF, o Quartz .NET oferece um sistema de agendamento versátil e confiável. Quando combinadas, essas ferramentas permitem que os desenvolvedores automatizem operações de criação de PDFs como parte de fluxos de trabalho ou agendem tarefas em segundo plano, o que melhora a utilidade e a funcionalidade de seus aplicativos.

Principais características

Horários flexíveis

O Quartz .NET permite que os programadores criem agendamentos que instruem os programas a serem executados em intervalos ou horários predeterminados (por exemplo, de hora em hora, diariamente, a cada 30 minutos). É compatível com padrões de agendamento complexos, como expressões cron, que oferecem controle preciso sobre os horários em que o código, as tarefas e os serviços são executados.

Execução baseada em gatilhos

No Quartz .NET, os trabalhos podem ser iniciados por diversos gatilhos. Isso inclui gatilhos baseados em calendário (que, por exemplo, excluem fins de semana), gatilhos simples (que operam de acordo com um cronograma definido), gatilhos de trabalho e gatilhos personalizados que dependem de circunstâncias ou ocorrências externas.

Permanência no emprego

O Quartz .NET possui a capacidade de agendar tarefas de forma persistente, permitindo o armazenamento das tarefas planejadas e seu histórico de conclusão em um banco de dados. A resiliência do agendamento de tarefas contra falhas ou reinicializações de aplicativos é garantida, e o agrupamento de tarefas para alta disponibilidade e escalabilidade é possibilitado.

Controle de Concorrência

Para garantir que as tarefas sejam concluídas com segurança e eficácia, o Quartz .NET possui ferramentas integradas de controle de concorrência. Para controlar a concorrência na execução de tarefas, os desenvolvedores podem configurar pools de threads, prioridades de tarefas e restrições de execução.

Encadeamento de tarefas e gestão de dependências

As tarefas podem ser executadas em uma ordem específica e os relacionamentos entre elas podem ser definidos pelos desenvolvedores graças ao suporte do Quartz.NET para encadeamento de tarefas e gerenciamento de dependências. Isso possibilita a criação de situações de orquestração complexas para tarefas, serviços e procedimentos em segundo plano.

Técnicas de tratamento de erros e repetição

Para lidar com falhas de forma adequada, o Quartz .NET possui técnicas de tratamento de erros e de repetição. Em caso de falhas ou exceções temporárias, os desenvolvedores podem configurar políticas de repetição e técnicas de tratamento de erros para garantir que as tarefas sejam repetidas ou reagendadas.

Agrupamento e escalabilidade

Graças ao suporte do Quartz.NET para clustering no agendamento de tarefas distribuídas, várias instâncias do agendador podem coordenar e executar tarefas em um cluster de servidores. Isso garante um agendador de tarefas confiável e sua execução em um contexto distribuído, possibilitando escalabilidade horizontal e tolerância a falhas.

Integração com o ecossistema .NET

O Quartz .NET se integra facilmente ao ecossistema .NET , que inclui sistemas de mensagens (Rebus .NET, MassTransit), frameworks de registro (Serilog, NLog) e frameworks populares de injeção de dependência (Autofac, Microsoft.Extensions.DependencyInjection).

Criar e configurar o Quartz .NET

Defina Tarefas e Gatilhos

Para as tarefas que deseja executar, crie trabalhos e gatilhos. A tarefa a ser concluída é representada por um objeto de contexto e uma classe de trabalho, e a frequência e o momento da execução do trabalho são definidos por um gatilho.

using Quartz;

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

// Build the job instance using JobBuilder
var job = JobBuilder.Create<MyJob>()
    .WithIdentity("myJob", "group1") // Assign a unique name and group to the job
    .Build();

// Create a trigger to define when the job should be executed
var trigger = TriggerBuilder.Create()
    .WithIdentity("myTrigger", "group1") // Assign a unique name and group to the trigger
    .WithCronSchedule("0 0/5 * * * ?") // Run every 5 minutes based on the cron expression
    .Build();
using Quartz;

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

// Build the job instance using JobBuilder
var job = JobBuilder.Create<MyJob>()
    .WithIdentity("myJob", "group1") // Assign a unique name and group to the job
    .Build();

// Create a trigger to define when the job should be executed
var trigger = TriggerBuilder.Create()
    .WithIdentity("myTrigger", "group1") // Assign a unique name and group to the trigger
    .WithCronSchedule("0 0/5 * * * ?") // Run every 5 minutes based on the cron expression
    .Build();
Imports Quartz

' Define a job by implementing the IJob interface
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

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

' Create a trigger to define when the job should be executed
Private trigger = TriggerBuilder.Create().WithIdentity("myTrigger", "group1").WithCronSchedule("0 0/5 * * * ?").Build()
$vbLabelText   $csharpLabel

Configurar e inicializar o agendador

Após configurar o agendador de tarefas com a configuração especificada para agendar tarefas em segundo plano, trabalhos e gatilhos, inicie o agendador para começar a planejar e executar os trabalhos.

using Quartz;
using Quartz.Impl;

// Create a scheduler factory and get a scheduler instance
var schedulerFactory = new StdSchedulerFactory();
var scheduler = await schedulerFactory.GetScheduler(); 

// Start the scheduler
await scheduler.Start();

// Schedule the job with its corresponding trigger
await scheduler.ScheduleJob(job, trigger);
using Quartz;
using Quartz.Impl;

// Create a scheduler factory and get a scheduler instance
var schedulerFactory = new StdSchedulerFactory();
var scheduler = await schedulerFactory.GetScheduler(); 

// Start the scheduler
await scheduler.Start();

// Schedule the job with its corresponding trigger
await scheduler.ScheduleJob(job, trigger);
Imports Quartz
Imports Quartz.Impl

' Create a scheduler factory and get a scheduler instance
Private schedulerFactory = New StdSchedulerFactory()
Private scheduler = await schedulerFactory.GetScheduler()

' Start the scheduler
Await scheduler.Start()

' Schedule the job with its corresponding trigger
Await scheduler.ScheduleJob(job, trigger)
$vbLabelText   $csharpLabel

Permanência no emprego

Configure o Quartz .NET para armazenar tarefas e metadados de acionamento em um armazenamento persistente, como um banco de dados. Isso garante confiabilidade e permite que os trabalhos sobrevivam a reinicializações do aplicativo.

Tratamento de erros

Incorpore o tratamento de erros e a lógica de repetição na sua lógica de execução de tarefas para lidar com falhas de forma adequada. O Quartz .NET fornece métodos integrados para gerenciar exceções e repetir tarefas.

Agrupamento

Para garantir alta disponibilidade e escalabilidade ao usar o Quartz .NET em um ambiente distribuído, configure o cluster. Graças ao recurso de clustering, a instância do agendador pode colaborar e executar tarefas em um cluster de servidores.

Injeção de Dependência

Configure o Quartz .NET para se comunicar com seu contêiner de injeção de dependência (DI) para gerenciar dependências de tarefas, configuração e ciclo de vida, caso seu aplicativo utilize um framework de injeção de dependência.

IronPDF

Quartz .NET (Como funciona para desenvolvedores): Figura 1 - Página web do IronPDF

A criação, modificação e renderização de documentos PDF em programas .NET é possível graças ao conhecido pacote .NET IronPDF. Uma infinidade de funcionalidades está disponível para interagir com PDFs: criação de PDFs a partir de conteúdo HTML, fotos ou dados brutos; Acrescentar texto, imagens e formas a documentos PDF preexistentes; Converter páginas HTML em PDFs; e extrair texto e imagens de PDFs.

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();

        // 1. Convert an HTML string to a PDF document
        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");

        // 2. Convert an HTML file to a PDF document
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert a URL to a PDF document
        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();

        // 1. Convert an HTML string to a PDF document
        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");

        // 2. Convert an HTML file to a PDF document
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert a URL to a PDF document
        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()

		' 1. Convert an HTML string to a PDF document
		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")

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

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

A simplicidade e a facilidade de uso do IronPDF são duas de suas principais vantagens. Os desenvolvedores podem começar facilmente a gerar PDFs em seus projetos .NET graças à API intuitiva e à extensa documentação. A velocidade e a eficiência do IronPDF são características adicionais que permitem aos desenvolvedores produzir documentos PDF de alta qualidade de forma rápida e eficaz.

Funcionalidades principais do IronPDF

  • Criação de PDFs a partir de dados brutos, HTML e imagens.
  • Extração de texto e imagens de arquivos PDF.
  • Permite incluir cabeçalhos, rodapés e marcas d'água em arquivos PDF.
  • Crie documentos PDF com segurança por senha e criptografia.
  • Fornece ferramentas para preencher formulários e assinar digitalmente.

Usando o Quartz com o IronPDF

Para começar a usar o IronPDF com o Quartz .NET em um aplicativo de console ou ASP.NET Core , você pode usar o IronPDF para configurar uma tarefa agendada em segundo plano que execute tarefas relacionadas à produção de PDFs.

Instalando os pacotes Quartz e IronPDF

Primeiro, certifique-se de ter instalado os pacotes NuGet necessários para o IronPDF e o Quartz .NET em seu projeto .NET usando o console do gerenciador de pacotes do Visual Studio com os seguintes comandos:

Install-Package Quartz
Install-Package IronPdf
Install-Package Quartz
Install-Package IronPdf
SHELL

Exemplo de código

Esta seção demonstra como criar um trabalho no Quartz que utiliza o IronPDF para criar documentos PDF.

using Quartz;
using IronPdf;

// Implementing a job that generates a PDF using IronPDF
public class PdfGenerationJob : IJob
{
    public async Task Execute(IJobExecutionContext context)
    {
        // Generating PDF using IronPDF
        var htmlContent = "<h1>Hello, IronPDF!</h1>";
        var pdfRenderer = new HtmlToPdf();
        var pdfDocument = pdfRenderer.RenderHtmlAsPdf(htmlContent);

        // Save the generated PDF to a file
        pdfDocument.SaveAs("output.pdf");
    }
}
using Quartz;
using IronPdf;

// Implementing a job that generates a PDF using IronPDF
public class PdfGenerationJob : IJob
{
    public async Task Execute(IJobExecutionContext context)
    {
        // Generating PDF using IronPDF
        var htmlContent = "<h1>Hello, IronPDF!</h1>";
        var pdfRenderer = new HtmlToPdf();
        var pdfDocument = pdfRenderer.RenderHtmlAsPdf(htmlContent);

        // Save the generated PDF to a file
        pdfDocument.SaveAs("output.pdf");
    }
}
Imports Quartz
Imports IronPdf

' Implementing a job that generates a PDF using IronPDF
Public Class PdfGenerationJob
	Implements IJob

	Public Async Function Execute(ByVal context As IJobExecutionContext) As Task
		' Generating PDF using IronPDF
		Dim htmlContent = "<h1>Hello, IronPDF!</h1>"
		Dim pdfRenderer = New HtmlToPdf()
		Dim pdfDocument = pdfRenderer.RenderHtmlAsPdf(htmlContent)

		' Save the generated PDF to a file
		pdfDocument.SaveAs("output.pdf")
	End Function
End Class
$vbLabelText   $csharpLabel

Configure o Quartz .NET para utilizar um gatilho que execute o processo de criação de PDF em um cronograma predeterminado.

// Create and configure the Quartz scheduler
var schedulerFactory = new StdSchedulerFactory();
var scheduler = await schedulerFactory.GetScheduler();
await scheduler.Start();

// Define the job and bind it to our PdfGenerationJob class
var job = JobBuilder.Create<PdfGenerationJob>()
    .WithIdentity("pdfGenerationJob", "pdfGenerationGroup")
    .Build();

// Define a trigger to schedule the PDF generation job
var trigger = TriggerBuilder.Create()
    .WithIdentity("pdfGenerationTrigger", "pdfGenerationGroup")
    .WithSimpleSchedule(x => x
        .WithIntervalInMinutes(30) // Run every 30 minutes
        .RepeatForever())
    .Build();

// Schedule the job using the scheduler
await scheduler.ScheduleJob(job, trigger);
// Create and configure the Quartz scheduler
var schedulerFactory = new StdSchedulerFactory();
var scheduler = await schedulerFactory.GetScheduler();
await scheduler.Start();

// Define the job and bind it to our PdfGenerationJob class
var job = JobBuilder.Create<PdfGenerationJob>()
    .WithIdentity("pdfGenerationJob", "pdfGenerationGroup")
    .Build();

// Define a trigger to schedule the PDF generation job
var trigger = TriggerBuilder.Create()
    .WithIdentity("pdfGenerationTrigger", "pdfGenerationGroup")
    .WithSimpleSchedule(x => x
        .WithIntervalInMinutes(30) // Run every 30 minutes
        .RepeatForever())
    .Build();

// Schedule the job using the scheduler
await scheduler.ScheduleJob(job, trigger);
' Create and configure the Quartz scheduler
Dim schedulerFactory = New StdSchedulerFactory()
Dim scheduler = Await schedulerFactory.GetScheduler()
Await scheduler.Start()

' Define the job and bind it to our PdfGenerationJob class
Dim job = JobBuilder.Create(Of PdfGenerationJob)().WithIdentity("pdfGenerationJob", "pdfGenerationGroup").Build()

' Define a trigger to schedule the PDF generation job
Dim trigger = TriggerBuilder.Create().WithIdentity("pdfGenerationTrigger", "pdfGenerationGroup").WithSimpleSchedule(Function(x) x.WithIntervalInMinutes(30).RepeatForever()).Build()

' Schedule the job using the scheduler
Await scheduler.ScheduleJob(job, trigger)
$vbLabelText   $csharpLabel

Para iniciar o agendador Quartz e começar a executar as tarefas planejadas:

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

Abaixo está o resultado gerado pelo código acima.

Quartz .NET (Como funciona para desenvolvedores): Figura 2 - Saída do exemplo de código IronPDF e Quartz .NET

Conclusão

Em resumo, a combinação do Quartz .NET com o IronPDF oferece uma maneira robusta de automatizar operações relacionadas à criação de PDFs em aplicações .NET . Com a ajuda do sistema de agendamento poderoso e adaptável do Quartz.NET, os desenvolvedores podem criar tarefas e gatilhos que executarão atividades em intervalos ou durações predeterminadas. O IronPDF, por outro lado, oferece aos desenvolvedores todas as ferramentas necessárias para criar e trabalhar com documentos PDF. Utilizando HTML, gráficos ou dados brutos, os desenvolvedores podem criar PDFs com aparência profissional.

Em aplicações distribuídas, os desenvolvedores podem automatizar operações típicas de geração de PDFs, como a criação de relatórios, faturas ou documentos, em intervalos predeterminados ou em resposta a gatilhos, integrando a funcionalidade de geração de PDFs do IronPDF com os recursos de agendamento do Quartz.NET. Essa integração permite que os desenvolvedores produzam e enviem documentos PDF de alta qualidade para clientes com mais facilidade, simplificando os fluxos de trabalho de geração de documentos, aumentando a produtividade e reduzindo o trabalho manual.

O IronPDF tem um preço razoável e inclui uma licença vitalícia quando adquirido como parte do pacote. Como o pacote custa apenas $799, que é uma taxa única para vários sistemas, ele oferece um valor excepcional. Oferece assistência técnica online 24 horas por dia, 7 dias por semana, aos titulares de licença. Para saber mais sobre os produtos fabricados pela Iron Software, visite a página de Produtos da Iron Software no site da Iron Software .

Perguntas frequentes

Como posso automatizar a criação de PDFs em uma aplicação .NET?

Você pode automatizar a criação de PDFs integrando o Quartz.NET ao IronPDF. O Quartz.NET cuida do agendamento de tarefas, enquanto o IronPDF permite gerar PDFs a partir de HTML, imagens ou dados brutos.

Quais são os benefícios de usar o Quartz.NET para agendamento de tarefas?

O Quartz.NET oferece uma estrutura robusta para agendamento de tarefas com recursos como agendamento flexível, execução baseada em gatilhos, persistência de tarefas, controle de concorrência, encadeamento de tarefas, tratamento de erros, técnicas de repetição e clustering para escalabilidade.

Como o IronPDF simplifica a geração de PDFs em .NET?

O IronPDF simplifica a geração de PDFs ao oferecer uma API intuitiva que converte HTML, imagens ou dados brutos em documentos PDF, ideais para relatórios, faturas e documentação. Ele mantém os layouts e estilos originais, garantindo resultados de alta qualidade.

É possível integrar o Quartz.NET e uma ferramenta de PDF para aprimorar a automação do fluxo de trabalho?

Sim, a integração do Quartz.NET com uma ferramenta de PDF como o IronPDF pode aprimorar a automação do fluxo de trabalho, agendando e automatizando tarefas de geração de PDFs em aplicativos .NET, melhorando a eficiência e a produtividade.

O que é persistência de tarefas no Quartz.NET e por que isso é importante?

A persistência de tarefas no Quartz.NET refere-se à capacidade de armazenar tarefas agendadas e seu histórico em um banco de dados, garantindo resiliência contra falhas ou reinicializações da aplicação. É crucial para manter o agendamento de tarefas e viabilizar o agrupamento de tarefas.

Como posso converter HTML para PDF em uma aplicação .NET?

Você pode usar o método RenderHtmlAsPdf do IronPDF para converter strings HTML em PDFs, ou o RenderHtmlFileAsPdf para converter arquivos HTML diretamente em PDFs.

Que tipos de padrões de agendamento o Quartz.NET suporta?

O Quartz.NET suporta vários padrões de agendamento, incluindo expressões cron, que proporcionam controle preciso sobre os tempos de execução e possibilitam cenários de agendamento complexos.

Como faço para instalar o Quartz.NET e o IronPDF no meu projeto .NET?

Instale o Quartz.NET e o IronPDF usando o console do gerenciador de pacotes do Visual Studio com os comandos: Install-Package Quartz e Install-Package IronPDF .

Quais são as principais funcionalidades do IronPDF para manipulação de PDFs?

O IronPDF oferece recursos como a criação de PDFs a partir de HTML, imagens ou dados brutos, extração de texto e imagens, adição de cabeçalhos, rodapés e marcas d'água, além de opções de segurança como proteção por senha.

Como a integração do Quartz.NET e do IronPDF aprimora os aplicativos .NET?

A integração do Quartz.NET com o IronPDF permite a geração automatizada de PDFs e o agendamento de tarefas, otimizando fluxos de trabalho e aumentando a produtividade em aplicações .NET.

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