IRONSOFTWAREHOME
MISES À JOUR POUR LES DÉVELOPPEURS

Hangfire .NET Core (Comment cela fonctionne pour les développeurs)

Jacob Mellor, Directeur technique @ Team Iron
Jacob Mellor
Updated: 21 avril 2026

Le développement d'applications modernes nécessite souvent le traitement de tâches en arrière-plan pour gérer de lourdes charges de travail. Dans de tels scénarios, nous avons besoin de gestionnaires de jobs en arrière-plan capables d'exécuter plusieurs jobs. Un tel gestionnaire de jobs en arrière-plan pour les applications C# .NET Core est Hangfire. Dans ce blog, nous allons apprendre à gérer les jobs en arrière-plan Hangfire et comment les utiliser avec d'autres packages comme IronPDF for PDF Generation pour générer des documents PDF en arrière-plan.

Hangfire simplifie l'implémentation du traitement en arrière-plan dans les applications ASP.NET Core ou .NET Core 6 Web API en fournissant un cadre fiable et flexible pour gérer et exécuter des jobs en arrière-plan. Hangfire est disponible sous forme de package NuGet et peut être installé en utilisant l'interface en ligne de commande .NET comme indiqué ci-dessous :

> dotnet add package Hangfire --version 1.8.6

Implémentation dans .NET Core Web API

Pour apprendre à utiliser Hangfire, créons une simple application API .NET Core et installons Hangfire en utilisant l'interface en ligne de commande.

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

Ici, nous créons une API REST simple pour la météo en utilisant l'interface en ligne de commande .NET. La première ligne crée un projet Web API .NET Core nommé HangfireDemo pour exécuter les points de terminaison d'API. La deuxième ligne navigue vers notre dossier nouvellement créé "HangfireDemo", puis nous construisons le projet. Ensuite, nous ajoutons le package NuGet Hangfire à notre projet et le reconstruisons. Après cela, vous pouvez ouvrir votre projet dans un éditeur de votre choix, tel que Visual Studio 2022 ou JetBrains Rider. Maintenant, si vous exécutez le projet, vous pouvez voir le Swagger comme suit :

Hangfire .NET Core (Comment ça marche pour les développeurs) : Figure 1 - Swagger

Ici, nous pouvons voir les API GET Météo, qui retournent date, résumé et température.

Hangfire .NET Core (Comment ça marche pour les développeurs) : Figure 2 - API de météo GET

Ajoutons maintenant un processeur de jobs en arrière-plan Hangfire. Ouvrez le projet dans Visual Studio.

Ajouter le processeur de jobs Hangfire

Configurez Hangfire dans votre application, généralement dans le fichier Startup.cs. Cela implique de configurer un stockage des tâches et d'initialiser le serveur 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
    }
}

La méthode ConfigureServices est utilisée pour ajouter un stockage afin de sauvegarder les nouvelles tâches créées par Hangfire. Ici, une base de données SQL Server est utilisée. La chaîne de connexion SQL Server doit être remplacée par "your_connection_string". On peut également utiliser le stockage en mémoire avec Hangfire.InMemory.

> dotnet add package Hangfire.InMemory --version 0.6.0

Et remplacer par :

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

Créer des jobs en arrière-plan

Définissez les méthodes que vous souhaitez exécuter en tant que jobs en arrière-plan. Ces méthodes doivent être des méthodes statiques ou d'instance d'une classe avec un constructeur sans paramètres. Les jobs peuvent être exécutés comme jobs récurrents, ou vous pouvez exécuter plusieurs jobs simultanément.

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

Mettre en file d'attente des jobs

Mettez en file d'attente des jobs en arrière-plan en utilisant l'API Hangfire. Vous pouvez planifier des jobs en arrière-plan pour qu'ils s'exécutent à une heure spécifique, après un délai ou régulièrement.

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

Tableau de bord et serveur Hangfire

Le tableau de bord et le serveur Hangfire peuvent être ajoutés dans la méthode Configure pour la surveillance en temps réel des tâches.

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

Le serveur peut également être ajouté dans ConfigureServices.

services.AddHangfireServer();

Jobs à exécution unique

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

Jobs récurrents

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

Jobs différés

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

Suites

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

Job en lots

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

Suite de jobs en lots

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

Tableau de bord

Le tableau de bord Hangfire est l'endroit où vous pouvez trouver toutes les informations sur vos jobs en arrière-plan. Il est écrit comme un middleware OWIN (si vous n'êtes pas familier avec OWIN, ne vous inquiétez pas), vous pouvez donc l'intégrer dans vos applications ASP.NET, ASP.NET MVC, Nancy et ServiceStack, ainsi qu'utiliser la fonctionnalité OWIN Self-Host pour héberger le tableau de bord à l'intérieur d'applications Console ou de services Windows.

Lorsque vous avez activé le tableau de bord, il est disponible à l'extension /hangfire/. Dans ce tableau de bord, vous pouvez gérer les jobs exécutés en arrière-plan, planifier des jobs en arrière-plan et visualiser les jobs à exécution unique ainsi que les jobs récurrents. Les jobs peuvent être identifiés à l'aide d'un identifiant de job.

Traitement en direct

Hangfire .NET Core (Comment ça marche pour les développeurs) : Figure 3 - Traitement en direct des tâches

Jobs réussis

Voir les jobs réussis ci-dessous.

Hangfire .NET Core (Comment ça marche pour les développeurs) : Figure 4 - Tâches réussies

Jobs planifiés

Hangfire .NET Core (Comment ça marche pour les développeurs) : Figure 5 - Tâches planifiées

Lorsque votre application s'exécute, Hangfire s'occupe de traiter les jobs en arrière-plan en fonction des paramètres configurés.

N'oubliez pas de consulter la documentation Hangfire pour plus d'options de configuration avancées et de fonctionnalités : Documentation Hangfire et le code complet peut être trouvé sur GitHub Hangfire Demo.

Présentation d'IronPDF

IronPDF for .NET PDF Generation est un package NuGet de la bibliothèque PDF Iron Software qui aide à lire et générer des documents PDF. Il peut convertir facilement des documents formatés avec des informations de style en PDF. IronPDF peut facilement générer des PDF à partir de contenu HTML. Il peut télécharger le HTML depuis l'URL et ensuite générer des PDF.

L'attraction principale d'IronPDF est sa fonction de conversion HTML en PDF, qui préserve les mises en page et les styles. Il peut créer des PDF à partir de contenu web, idéal pour les rapports, les factures et la documentation. Cette fonctionnalité prend en charge la conversion des fichiers HTML, des URL et des chaînes HTML en 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");
    }
}

Commencer avec IronPDF

Installer la bibliothèque IronPDF

Installer via NuGet Package Manager

Pour intégrer IronPDF dans votre projet Hangfire .NET en utilisant le gestionnaire de packages NuGet, suivez ces étapes :

  1. Ouvrez Visual Studio et dans l'Explorateur de solutions, faites un clic droit sur votre projet.
  2. Choisissez "Gérer les packages NuGet..." dans le menu contextuel.
  3. Accédez à l'onglet Parcourir et recherchez IronPDF.
  4. Sélectionnez la bibliothèque IronPDF dans les résultats de recherche et cliquez sur le bouton Installer.
  5. Acceptez tout accord de licence s'il y en a.

Si vous préférez utiliser la console du gestionnaire de packages, exécutez la commande suivante :

PM > Install-Package IronPdf

Cela va récupérer et installer IronPDF dans votre projet.

Installer en utilisant le site NuGet

Pour un aperçu détaillé d'IronPDF, y compris les fonctionnalités, la compatibilité et les options de téléchargement supplémentaires, visitez la page IronPDF sur le site NuGet à https://www.nuget.org/packages/IronPdf.

Installer via DLL

Alternativement, vous pouvez incorporer IronPDF directement dans votre projet en utilisant son fichier DLL. Téléchargez le fichier ZIP contenant le DLL de ce téléchargement direct IronPDF. Décompressez-le, et incluez le DLL dans votre projet.

Maintenant modifions notre application pour ajouter un job de traitement en arrière-plan pour télécharger un site web sous forme de fichier 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 dispose d'une méthode intégrée pour télécharger un site web à partir d'une URL et l'enregistrer sous forme de document PDF. Nous allons utiliser cette méthode dans notre job pour télécharger et sauvegarder à un emplacement spécifié. Ce job en arrière-plan peut être modifié pour prendre plusieurs URL de sites web et les sauvegarder sous forme de PDF.

Ajoutons maintenant un contrôleur pour exposer les API de génération et de téléchargement 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" };
    }
}

Ici, nous avons créé deux API : une pour démarrer le job en arrière-plan et prendre l'URL du site web pour initier le téléchargement, et une autre API pour télécharger le PDF résultant. Les API sont représentées comme suit.

Hangfire .NET Core (Comment ça marche pour les développeurs) : Figure 7 - APIs de PDFGenerator

Et le résultat ressemble à ceci :

Hangfire .NET Core (Comment ça marche pour les développeurs) : Figure 8 - Résultat

Licence (Essai Gratuit Disponible)

Pour que le code ci-dessus fonctionne sans filigranes, une clé de licence est requise. Une licence d'essai est disponible pour les développeurs en s'inscrivant à IronPDF Free Trial. Aucune carte de crédit n'est requise pour une licence d'essai. Vous pouvez fournir votre adresse e-mail et vous inscrire pour un essai gratuit.

Conclusion

Hangfire et IronPDF sont une excellente combinaison pour générer et télécharger des PDF en arrière-plan. Hangfire permet un traitement efficace des tâches de longue durée, tandis qu'IronPDF fournit une solution flexible et facile à utiliser pour la génération de PDF. Pour en savoir plus sur IronPDF, vous pouvez visiter la documentation IronPDF.

Explorez également d'autres outils de la suite de produits Iron Software qui peuvent améliorer vos compétences en programmation et satisfaire aux exigences modernes des applications.

Jacob Mellor, Directeur technique @ Team Iron
Directeur technique

Jacob Mellor est directeur de la technologie chez Iron Software et un ingénieur visionnaire pionnier de la technologie C# PDF. En tant que développeur à l'origine de la base de code centrale d'Iron Software, il a façonné l'architecture des produits de l'entreprise depuis sa création, la transformant aux côtés du PDG Cameron Rimington en une entreprise de plus de 50 personnes au service de la NASA, de Tesla et d'agences gouvernementales mondiales.

...
Lire la suite

Articles connexes

Key in blue circle

Obtenez votre clé d'essai de 30 jours instantanément.

Your trial license will be sent to your email address

Aucune restriction. 100 % débloqué. Pas de carte bancaire.

OR
bullet_checkedAucune carte de crédit ou création de compte requiseAucune restriction. 100 % débloqué. Pas de carte bancaire.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried Iron Suite
Réservez votre Démonstration en direct gratuite
Booking Badge

De confiance par des millions d'ingénieurs dans le monde entier

Logos des clients d'Iron Software
Obtenez Votre Consultation sans Engagement
Remplissez le formulaire ci-dessous ou envoyez un email à sales@ironsoftware.com
Vos informations seront toujours gardées confidentielles.
De confiance par des millions d'ingénieurs dans le monde entier
Logos des clients d'Iron Software
Obtenez votre clé d'essai 30 jours gratuitement.
Aucune carte de crédit ou création de compte requise
Bibliothèque C# NuGet pour PDF
Installer avec NuGet

Version : 2026.9

PM > Install-Package IronPdf
nuget.org/packages/IronPdf/
  1. Dans l'explorateur de solutions, faites un clic droit sur Références, Gestion des packages NuGet
  2. Sélectionnez Parcourir et recherchez « IronPDF »
  3. Sélectionnez le package et installez
C# PDF DLL
Télécharger DLL

Version : 2026.9

ou téléchargez l'installateur Windows ici.

  1. Téléchargez et décompressez IronPDF à un emplacement tel que ~/Libs dans votre répertoire de solution
  2. Dans l'explorateur de solutions Visual Studio, faites un clic droit sur Références. Sélectionnez Parcourir, « IronPDF.dll »

Licences à partir de 749 $