Utilisation de Hangfire avec Sitefinity
Sitefinity offre d’excellentes options intégrées pour la planification de vos tâches d’arrière-plan, mais lorsque vous avez besoin de davantage d’informations, il est également facile d’intégrer des outils externes. Voici comment améliorer la planification de vos tâches dans Sitefinity avec Hangfire.
Problème – Exécuter et gérer des tâches en arrière-plan dans Sitefinity
En tant que développeur Web, vous pouvez faire face à différents scénarios nécessitant l’utilisation de tâches en arrière-plan planifiées. Les scénarios peuvent varier: obtenir des données de sources externes ou internes (base de données, CRM, ERP, etc.), les modifier et les stocker à nouveau, ou simplement déclencher une logique personnalisée toutes les minutes, tous les jours, toutes les semaines, etc.
Solutions possibles [19659005] Sitefinity est livré avec sa propre version du mécanisme de planification utilisant SchedulingManager . Il est extensible et peut être utilisé dans de nombreux scénarios différents.
Planificateur intégré de Sitefinity vs Hangfire
Voyons tout d'abord ce qui est commun pour les deux approches. Les deux:
- Ne bloquez pas l'interface utilisateur (elle s'exécute dans un thread séparé)
- Peut être exécutée sur des environnements NLB et les tâches s'exécutent sur des serveurs différents
- Utilisez une base de données pour stocker les données de la tâche, afin que les informations sera préservé au redémarrage de l'application
- Utilisez une API pour gérer les travaux en arrière-plan
Voyons maintenant les différences .
Planificateur intégré de Sitefinity | Hangfire |
|
|
Dans ce cas, il est recommandé d'utiliser le planificateur intégré Sitefinity pour les petits nombres ou des types de tâches planifiées similaires, lorsque vous n'avez pas réellement besoin d'une l'interface de gestion pour eux.
Hangfire est pratique lorsque vous avez besoin d'une configuration de planification avancée (par exemple, la syntaxe CRON) et que vous devez gérer les tâches à l'aide de l'interface utilisateur.
Voyons maintenant comment intégrer Hangfire dans Sitefinity. Il existe 2 étapes simples:
- Installer les packages Hangfire dans votre solution
- Configurer Hangfire dans votre projet Sitefinity
Installer Hangfire dans Sitefinity
Pour pouvoir utiliser Hangfire avec votre application Sitefinity, vous devez installer Hangfire NuGet. package et toutes ses dépendances requises:
- Ouvrez votre projet d’application Sitefinity dans Visual Studio.
- Accédez à Outils > Gestionnaire de packages NuGet et sélectionnez Console du gestionnaire de packages .
- Exécutez la commande suivante:
Install-Package Hangfire [19659039] NOTE : Sitefinity 11 fait référence aux versions d'Owin et de Newtonsoft.Json qui sont supérieures à celles utilisées par défaut par Hangfire. Veillez à mettre à jour tous les packages NuGet afin qu'ils correspondent aux versions référencées par Sitefinity. Pour ce faire, vous pouvez exécuter les commandes suivantes dans la console du gestionnaire de packages NuGet:
Update-Package Owin -Version 3.1.0
Update-Package Owin.Host.Systemweb -Version 3.1.0
Update-Package NewtonSoft.Json – Version 9.0.1
Une fois que vous avez installé les packages NuGet nécessaires, vous pouvez configurer Sitefinity pour utiliser Hangfire.
Configuration de Hangfire dans Sitefinity
Hangfire est basé sur OWIN. le middleware et Sitefinity permettent une intégration simple et nette.
Création d'une classe de démarrage personnalisée pour enregistrer Hangfire
La première étape consiste à créer une classe et à la nommer Startup (si une telle classe existe déjà, elle peut être utilisé). Cette classe est utilisée comme point d’entrée par OWIN qui recherche une méthode Configure () à exécuter au démarrage de l’application.
Il existe déjà un excellent article sur intégrant OWIN dans Sitefinity qui peut être trouvé ici .