Passer au contenu du pied de page
.NET AIDE

Quartz .NET (Comment ça fonctionne pour les développeurs)

Introduction à Quartz.NET

Pour les applications .NET, Quartz.NET est un outil de planification de tâches open-source très apprécié. Il offre aux programmeurs une base solide pour planifier et exécuter des travaux, des horaires ou des processus à des périodes prédéterminées, des intervalles ou en réponse à des déclencheurs. Quartz.NET facilite la création de scénarios de planification complexes dans les applications .NET, que ce soit pour envoyer des notifications, planifier des travaux, générer des rapports ou réaliser des activités de maintenance périodiques. Quartz.NET est idéal en tant que système de planification de tâches pour créer de petites applications à de grands systèmes d'entreprise.

Quartz.NET, avec sa dernière version du planificateur, offre une intégration transparente avec divers fournisseurs de bases de données pris en charge, permettant aux développeurs d'étendre ses fonctionnalités à l'aide d'une méthode d'extension pratique tout en assurant une exécution fiable des tâches en tant que service hébergé.

La création de systèmes de planification fiables avec des capacités de production de PDF performantes dans les applications .NET est rendue possible en intégrant Quartz.NET avec IronPDF. Bien que IronPDF offre une suite complète d'outils pour créer, modifier et afficher des documents PDF, Quartz.NET propose un système de planification polyvalent et fiable. Combinés, ils permettent aux développeurs d'automatiser les opérations de création de PDF dans le cadre de flux de travail ou de planifier des travaux en arrière-plan, ce qui améliore l'utilité et la fonctionnalité de leurs applications.

Caractéristiques clés

Planification flexible

Quartz.NET permet aux programmeurs de créer des horaires qui indiquent aux programmes de fonctionner à des intervalles ou des heures prédéterminés (par exemple, toutes les heures, tous les jours, toutes les 30 minutes). Il est compatible avec des schémas de planification complexes, tels que les expressions cron, qui offrent un contrôle précis sur les moments où le code, les travaux et les services sont exécutés.

Exécution basée sur les déclencheurs

Dans Quartz.NET, les travaux peuvent être lancés par une variété de déclencheurs. Cela inclut des déclencheurs basés sur le calendrier (qui, par exemple, excluent les week-ends), des déclencheurs simples (qui fonctionnent selon un horaire défini), des déclencheurs de travaux, et des déclencheurs personnalisés dépendant de circonstances ou d'événements extérieurs.

Persistance des travaux

Quartz.NET a la capacité de planifier des travaux de manière persistante, permettant la sauvegarde des tâches planifiées et de leur historique de réalisation dans une base de données. La résilience des horaires de travail face aux défaillances ou redémarrages des applications est garantie, et le regroupement de travaux pour une haute disponibilité et évolutivité est rendu possible.

Contrôle de la concurrence

Pour garantir que les tâches sont effectuées de manière sûre et efficace, Quartz.NET dispose d'outils intégrés de contrôle de la concurrence. Pour contrôler la concurrence de l'exécution des travaux, les développeurs peuvent configurer des pools de threads, des priorités de travaux et des contraintes d'exécution.

Enchaînement des travaux et gestion des dépendances

Les travaux peuvent être exécutés dans un ordre spécifié et les relations entre eux peuvent être définies grâce au support de Quartz.NET pour l'enchaînement des travaux et la gestion des dépendances. Cela rend possible la création de scénarios d'orchestration complexes pour les travaux en arrière-plan, les services et les procédures.

Gestion des erreurs et techniques de réessai

Pour gérer les échecs avec élégance, Quartz.NET dispose de techniques de gestion des erreurs et de réessai. En cas de défaillances temporaires ou d'exceptions, les développeurs peuvent configurer des politiques de réessai et des techniques de gestion des erreurs pour garantir que les travaux soient réessayés ou replanifiés.

Regroupement et évolutivité

Plusieurs instances du planificateur peuvent coordonner et exécuter des tâches à travers un cluster de serveurs grâce au support de Quartz.NET pour le regroupement dans la planification de travaux distribués. Cela garantit un planificateur de tâches fiable et une exécution dans un contexte distribué en permettant l'évolutivité horizontale et la tolérance aux pannes.

Intégration avec l'écosystème .NET

Quartz.NET s'intègre facilement avec l'écosystème .NET, qui comprend les systèmes de messagerie (Rebus.NET, MassTransit), les frameworks de journalisation (Serilog, NLog), et les frameworks d'injection de dépendances populaires (Autofac, Microsoft.Extensions.DependencyInjection).

Créer et configurer Quartz.NET

Définir des travaux et déclencheurs

Pour les tâches que vous souhaitez exécuter, définissez des travaux et des déclencheurs. La tâche à réaliser est représentée par un objet contexte et une classe de travail, et la fréquence et le moment de l'exécution du travail sont décidés par un déclencheur.

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

Configurer et initialiser le planificateur

Après avoir configuré le planificateur de travaux avec les paramètres spécifiés pour planifier les tâches en arrière-plan, les travaux et les déclencheurs, lancez le planificateur pour commencer à planifier et exécuter les travaux.

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

Persistance des travaux

Configurez Quartz.NET pour stocker les travaux et les métadonnées des déclencheurs dans un stockage permanent, comme une base de données. Cela garantit la fiabilité et permet aux travaux de survivre aux redémarrages de l'application.

Gestion des erreurs

Intégrez la gestion des erreurs et la logique de réessai dans votre logique d'exécution des travaux pour traiter les échecs avec élégance. Quartz.NET fournit des méthodes intégrées pour gérer les exceptions et réessayer les tâches.

Regroupement

Pour garantir une haute disponibilité et une évolutivité lors de l'utilisation de Quartz.NET dans un environnement distribué, configurez le regroupement. L'instance du planificateur peut collaborer et exécuter des tâches parmi un cluster de serveurs grâce au regroupement.

Injection de dépendances

Configurez Quartz.NET pour communiquer avec votre conteneur d'injection de dépendances (DI) pour gérer les dépendances de travail, la configuration et le cycle de vie si votre application utilise un framework d'injection de dépendances.

IronPDF

Quartz .NET (Fonctionnement pour les développeurs) : Figure 1 - Page web d'IronPDF

La création, la modification et le rendu de documents PDF au sein d'applications .NET sont rendus possibles par le package .NET bien connu IronPDF. Une multitude de fonctionnalités sont disponibles pour interagir avec les PDF : créer des PDF à partir de contenu HTML, d'images ou de données brutes ; ajouter du texte, des images et des formes à des documents PDF existants ; convertir des pages HTML en PDF ; et extraire du texte et des images de PDF.

IronPDF excelle dans la conversion HTML en PDF, garantissant une préservation précise des mises en page et styles originaux. Il est parfait pour créer des PDF à partir de contenus basés sur le Web tels que des rapports, des factures et de la documentation. Avec le support des fichiers HTML, des URLs et des chaînes HTML brutes, IronPDF produit facilement des documents PDF de haute qualité.

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

La simplicité et la convivialité d'IronPDF sont deux de ses principaux avantages. Les développeurs peuvent facilement commencer à générer des PDF dans leurs projets .NET grâce à son API conviviale et à sa documentation complète. La rapidité et l'efficacité d'IronPDF sont d'autres caractéristiques qui permettent aux développeurs de produire des documents PDF de haute qualité rapidement et efficacement.

Caractéristiques principales d'IronPDF

  • Création de PDF à partir de données brutes, de HTML et d'images.
  • Extraction de texte et d'images à partir de fichiers PDF.
  • Vous permet d'ajouter des en-têtes, des pieds de page et des filigranes dans les fichiers PDF.
  • Créez des documents PDF avec sécurité par mot de passe et cryptage.
  • Fournit des outils pour remplir des formulaires et signer numériquement.

Utiliser Quartz avec IronPDF

Pour commencer à utiliser IronPDF avec Quartz.NET dans une application console ou ASP.NET Core, vous pouvez utiliser IronPDF pour établir un travail en arrière-plan planifié qui exécute des tâches liées à la production de PDF.

Installation des packages Quartz et IronPDF

Tout d'abord, assurez-vous d'avoir installé les packages NuGet requis pour IronPDF et Quartz.NET dans votre projet .NET à l'aide de la console du gestionnaire de packages Visual Studio avec les commandes suivantes :

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

Exemple de code

Cette section montre comment créer un travail Quartz qui utilise IronPDF pour créer des documents 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

Configurez Quartz.NET pour utiliser un déclencheur afin d'exécuter le processus de création de PDF selon un planning prédéterminé.

// 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

Pour lancer le planificateur Quartz et commencer à effectuer les tâches planifiées :

// 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

Ci-dessous se trouve la sortie générée par le code ci-dessus.

Quartz .NET (Fonctionnement pour les développeurs) : Figure 2 - Sortie de l'exemple de code IronPDF et Quartz.NET

Conclusion

En résumé, la combinaison de Quartz.NET et IronPDF offre un moyen efficace d'automatiser les opérations liées à la création de PDF dans les applications .NET. Avec l'aide du système de planification puissant et adaptable de Quartz.NET, les développeurs peuvent créer des travaux et des déclencheurs qui effectueront des activités à des intervalles ou des durées prédéterminés. IronPDF, quant à lui, offre aux développeurs tous les outils nécessaires pour créer et manipuler des documents PDF. Grâce au HTML, aux graphiques ou aux données brutes, les développeurs peuvent créer des PDF de qualité professionnelle.

Les développeurs peuvent automatiser des opérations typiques de génération de PDF dans des applications distribuées, telles que la création de rapports, de factures ou de documents, à des intervalles prédéterminés ou en réaction à des déclencheurs, en intégrant la fonctionnalité de génération de PDF d'IronPDF avec les capacités de planification de Quartz.NET. Cette intégration permet aux développeurs de produire et d'envoyer plus facilement des documents PDF de haute qualité aux clients ou aux clients en rationalisant les flux de travail de génération de documents, augmentant la productivité et réduisant le travail manuel.

IronPDF est à prix raisonnable et vient avec une licence à vie lorsqu'il est acheté dans le cadre du package. Étant donné que le package ne coûte que $799, un seul paiement pour plusieurs systèmes, il offre une valeur exceptionnelle. Il fournit une assistance en ingénierie en ligne 24 heures sur 24 et 7 jours sur 7 aux titulaires de licence. Pour en savoir plus sur les produits fabriqués par Iron Software, visitez la page Produits d'Iron Software sur le site web d'Iron Software.

Questions Fréquemment Posées

Comment puis-je automatiser la création de PDF dans une application .NET ?

Vous pouvez automatiser la création de PDF en intégrant Quartz.NET avec IronPDF. Quartz.NET gère la planification des tâches, tandis qu'IronPDF vous permet de générer des PDF à partir de HTML, d'images ou de données brutes.

Quels sont les avantages de l'utilisation de Quartz.NET pour la planification des tâches ?

Quartz.NET fournit un cadre robuste pour la planification des tâches avec des fonctionnalités telles que la planification flexible, l'exécution basée sur des déclencheurs, la persistance des tâches, le contrôle de la concurrence, le chaînage des tâches, la gestion des erreurs, les techniques de reprise et le clustering pour l'évolutivité.

Comment IronPDF simplifie-t-il la génération de PDF dans .NET ?

IronPDF simplifie la génération de PDF en offrant une API conviviale qui convertit le HTML, les images ou les données brutes en documents PDF, idéal pour les rapports, les factures et la documentation. Il maintient les mises en page et styles originaux, assurant une sortie haute qualité.

Quartz.NET et un outil PDF peuvent-ils être intégrés pour une automatisation accrue des flux de travail ?

Oui, l'intégration de Quartz.NET avec un outil PDF comme IronPDF peut améliorer l'automatisation des flux de travail en planifiant et automatisant les tâches de génération de PDF dans les applications .NET, améliorant l'efficacité et la productivité.

Qu'est-ce que la persistance des tâches dans Quartz.NET, et pourquoi est-elle importante ?

La persistance des tâches dans Quartz.NET se réfère à la capacité de stocker les tâches planifiées et leur historique dans une base de données, assurant la résilience contre les pannes ou redémarrages de l'application. Elle est cruciale pour maintenir les plannings de tâches et permettre le clustering des tâches.

Comment puis-je convertir du HTML en PDF dans une application .NET ?

Vous pouvez utiliser la méthode RenderHtmlAsPdf d'IronPDF pour convertir des chaînes HTML en PDF, ou RenderHtmlFileAsPdf pour convertir des fichiers HTML directement en PDF.

Quels types de schémas de planification Quartz.NET prend-il en charge ?

Quartz.NET prend en charge divers schémas de planification, y compris les expressions cron, qui offrent un contrôle précis sur les temps d'exécution et permettent des scénarios de planification complexes.

Comment puis-je installer Quartz.NET et IronPDF dans mon projet .NET ?

Installez Quartz.NET et IronPDF en utilisant la console du gestionnaire de packages de Visual Studio avec les commandes : Install-Package Quartz et Install-Package IronPdf.

Quelles sont les fonctionnalités principales d'IronPDF pour la manipulation de PDF ?

IronPDF offre des fonctionnalités telles que la création de PDF à partir de HTML, d'images ou de données brutes, l'extraction de texte et d'images, l'ajout d'entêtes, de pieds de page et de filigranes, et des options de sécurité comme la protection par mot de passe.

Comment l'intégration de Quartz.NET et IronPDF améliore-t-elle les applications .NET ?

L'intégration de Quartz.NET avec IronPDF permet une génération automatique de PDF et une planification des tâches, rationalisant les flux de travail et améliorant la productivité dans les applications .NET.

Curtis Chau
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes ...

Lire la suite