Comment travailler avec Hangfire en C #

La planification des travaux dans les applications Web est un défi et vous pouvez choisir parmi de nombreux cadres pour la tâche. Une bibliothèque open source populaire, Hangfire est un framework qui peut être utilisé pour planifier des travaux d'arrière-plan dans .Net.

Pourquoi devrais-je utiliser Hangfire?

Il existe aujourd'hui de nombreux cadres de planification des travaux. Pourquoi devriez-vous alors utiliser Hangfire au lieu de, disons, Quartz.Net, qui est un autre cadre populaire utilisé depuis longtemps? Eh bien, l'un des principaux inconvénients de Quartz.Net est qu'il nécessite un service Windows. Au contraire, vous n'avez pas besoin d'un service Windows pour utiliser Hangfire dans votre application. La possibilité de fonctionner sans service Windows fait de Hangfire un bon choix par rapport à Quartz.Net. Hangfire tire parti du pipeline de traitement des demandes d'ASP.Net pour le traitement et l'exécution des travaux.

Notez que Hangfire n'est pas limité aux applications Web; vous pouvez également l'utiliser dans vos applications de console. La documentation de Hangfire est très détaillée et bien structurée, et la meilleure fonctionnalité est son tableau de bord intégré. Le tableau de bord Hangfire affiche des informations détaillées sur les tâches, les files d'attente, l'état des tâches, etc.

Commencer

Pour créer un nouveau projet dans Visual Studio qui exploite Hangfire, procédez comme suit:

  1. Ouvrez Visual Studio 2015
  2. Cliquez sur Fichier> Nouveau> Projet
  3. Sélectionnez Visual C #> Web dans la liste des modèles de projet affichés
  4. Sélectionnez l'application Web ASP.Net dans la liste des modèles de projet Web
  5. Enregistrez le projet avec un nom

L'étape suivante consiste à installer et à configurer Hangfire dans votre application; le processus est assez simple. Vous pouvez installer Hangfire via le gestionnaire de package NuGet dans Visual Studio. Vous pouvez également utiliser la console du gestionnaire de packages pour installer la bibliothèque Hangfire. L'installation par défaut de Hangfire utilise SQL Server pour stocker les informations de planification. De plus, vous pouvez installer Hangfire.Redis si vous utilisez Redis à la place pour le stockage.

Notez que Hangfire stocke vos tâches dans un stockage persistant - vous devez configurer le stockage avant de commencer à utiliser Hangfire. Pour ce faire, créez une base de données et spécifiez les informations d'identification de la base de données dans la chaîne de connexion du fichier de configuration. Vous n'avez pas besoin de créer les tables dans votre base de données; Hangfire le fera automatiquement pour vous. Nous verrons comment et quand cela se fera plus tard.

Maintenant que la base de données a été créée et que les informations de chaîne de connexion sont spécifiées dans le fichier de configuration de l'application, l'étape suivante consiste à modifier le fichier Startup.cs et à fournir les informations de chaîne de connexion nécessaires. La liste de codes suivante illustre le fonctionnement du fichier Startup.cs une fois que les détails de configuration ont été spécifiés.

using Hangfire;

using Microsoft.Owin;

using Owin;

using System;

[assembly: OwinStartupAttribute(Type de(HangFire.Startup))]

namespace HangFire

{

    public partial class Startup

    {

        public void Configuration(IAppBuilder app)

        {

            ConfigureAuth(app);

            GlobalConfiguration.Configuration

                .UseSqlServerStorage("DefaultConnection");

            BackgroundJob.Enqueue(() => Console.WriteLine("Getting Started with HangFire!"));

            app.UseHangfireDashboard();

            app.UseHangfireServer();

        }

    }

}

Vous êtes prêt. Lorsque vous exécutez l'application et que vous ajoutez à l'URL le suffixe "/ hangfire", vous pouvez voir le tableau de bord Hangfire. Lorsque vous exécutez cela la toute première fois, une nouvelle table est créée dans la base de données. Les tables créées incluent AggregatedCounter, Counter, Hash, Job, JobParameter, JobQueue, List, Schema, Server, Set et State. Créer un arrière-plan Fire-and-forget dans Hangfire est assez simple. Vous pouvez créer un travail d'arrière-plan à l'aide de la Enqueue()méthode de la BackgroundJobclasse. Voici un exemple:

BackgroundJob.Enqueue(() => Console.WriteLine("This is a fire-and-forget job that would run in the background."));

Un travail d'arrière-plan retardé est celui qui attend (l'intervalle de délai), puis s'exécute à peu près de la même manière qu'un travail d'arrière-plan d'incendie et d'oubli normal. L'extrait de code suivant illustre comment vous pouvez créer un travail d'arrière-plan différé à l'aide de la Schedule()méthode de la BackgroundJobclasse.

BackgroundJob.Schedule(() => Console.WriteLine("This background job would execute after a delay."), TimeSpan.FromMilliseconds(1000));

Si vous deviez exécuter des tâches qui s'exécuteraient après un intervalle de temps spécifique, vous devrez créer des tâches récurrentes dans Hangfire. Pour créer un travail récurrent, vous devrez tirer parti de la RecurringJobclasse. Notez que vous pouvez également spécifier des expressions «cron» lors de la planification de tâches dans Hangfire. L'extrait de code suivant montre comment créer une tâche récurrente à l'aide de la bibliothèque Hangfire.

RecurringJob.AddOrUpdate(() => Console.WriteLine("This job will execute once in every minute"), Cron.Minutely);

Consultez le didacticiel sur le surligneur Hangfire pour plus d'informations.