Fermer

octobre 17, 2018

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.

  • Une autre option consiste à utiliser un outil de traitement de travail d'arrière-plan très populaire appelé Hangfire . Il possède une interface utilisateur intégrée pour la gestion des tâches planifiées.
  • 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
                
    • Aucune dépendance externe à des bibliothèques tierces.
    • Aucune licence supplémentaire.
    • Sans frais supplémentaire
    • Livré avec le produit depuis le début.
                
    • C'est un logiciel mature. La première version date de fin 2013 et est activement développée.
    • Elle possède une interface utilisateur – un tableau de bord intégré qui facilite la maintenabilité des travaux.
    • Elle est fournie avec des types de travail prédéfinis pour configurer facilement des travaux personnalisés. [19659018] Prise en charge de la syntaxe CRON
    • Versions gratuite et payante disponibles

    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:

    1. Ouvrez votre projet d’application Sitefinity dans Visual Studio.
    2. Accédez à Outils > Gestionnaire de packages NuGet et sélectionnez Console du gestionnaire de packages .
    3. 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 .