Développer et déployer WebJobs à l’aide de Visual Studio

Cet article explique comme utiliser Visual Studio pour déployer un projet d’application console sur une application web dans Azure App Service en tant que WebJob Azure. Pour plus d’informations sur le déploiement de WebJobs à l’aide du portail Azure, consultez la section Exécuter des tâches en arrière-plan avec WebJobs dans Azure App Service.

Vous pouvez choisir de développer un WebJob qui s’exécute soit comme une application .NET Core, soit comme une application .NET Framework. La version 3.x du SDK Azure WebJobs vous permet de développer des tâches web qui s'exécutent en tant qu'applications .NET Core ou .NET Framework, tandis que la version 2.x ne prend en charge que le .NET Framework. La façon dont vous déployez un projet WebJobs est différente pour les projets .NET Core par rapport aux projets .NET Framework.

Vous pouvez publier plusieurs WebJobs dans une application web unique, à condition que chaque WebJob d’une application web ait un nom unique.

Tâches web en tant qu’applications de console .NET Core

Avec la version 3.x du Kit de développement logiciel (SDK) Azure WebJobs, vous pouvez créer et publier des WebJobs en tant qu’applications console .NET Core. Pour obtenir des instructions étape par étape afin de créer et de publier une application console .NET Core pour Azure en tant que WebJob, consultez Prise en main du Kit de développement logiciel (SDK) Azure WebJobs pour le traitement en arrière-plan basé sur les événements.

Notes

Les applications Web .NET Core et/ou les tâches Web .NET Core ne peuvent pas être liées à des projets Web. Si vous avez besoin de déployer votre WebJob avec une application web, créez vos WebJobs en tant qu’application console .NET Framework.

Déployer dans Azure App Service

La publication d’un WebJob .NET Core sur Azure App Service à partir de Visual Studio utilise les mêmes outils que la publication d’une application ASP.NET Core.

  1. Dans l’Explorateur de solutions, cliquez avec le bouton droit sur le projet, puis sélectionnez Publier.

  2. Dans la boîte de dialogue Publier, sélectionnez Azure dans Cible, puis sélectionnez Suivant.

  3. Sélectionnez Azure WebJobs pour Cible spécifique, puis sélectionnez Suivant.

  4. Au-dessus de Instances App Service, sélectionnez le bouton plus ( + ) pour créer une nouvelle tâche web Azure.

  5. Dans la boîte de dialogue App Service (Windows) , utilisez les paramètres d’hébergement spécifiés dans le tableau suivant.

    Paramètre Valeur suggérée Description
    Nom Nom globalement unique Nom qui identifie uniquement votre nouvelle application de fonction.
    Abonnement Choisir votre abonnement Sélectionnez l’abonnement Azure à utiliser.
    Groupe de ressources myResourceGroup Nom du groupe de ressources où créer votre application de fonction. Choisissez Nouveau pour créer un groupe de ressources.
    Plan d’hébergement Plan App Service Un plan App Service spécifie l’emplacement, la taille et les fonctionnalités de la batterie de serveurs web qui héberge votre application. Vous pouvez économiser de l’argent lors de l’hébergement de plusieurs applications en configurant les applications web pour partager un plan App Service. Les plans App Service définissent la région, la taille de l’instance, le compte de l’échelle et la référence SKU (gratuite, partagée, de base, standard et premium). Choisissez Nouveau pour créer un plan App Service. Les niveaux Gratuit et De base ne prennent pas en charge l’option Always-on permettant de maintenir le fonctionnement continu de votre site.

    Create App Service dialog box

  6. Sélectionnez Créer pour créer un WebJob et les ressources associées dans Azure avec ces paramètres et déployer votre code de projet.

  7. Sélectionnez Terminer pour revenir à la page Publier.

Tâches web en tant qu’applications de console .NET Framework

Si vous utilisez Visual Studio pour déployer un projet d’application console .NET Framework pour WebJobs, il copie les fichiers de runtime dans le dossier approprié de l’application web (App_Data/jobs/continuous pour les WebJobs continus et App_Data/jobs/triggered pour les WebJobs planifiés ou à la demande).

Visual Studio ajoute les éléments suivants à un projet pour WebJobs :

Diagram showing what's added to a console app to enable deployment as a WebJob

Vous pouvez ajouter ces éléments à un projet d’application console existant ou utiliser un modèle pour créer un projet d’application console pour WebJobs.

Déployez un projet sous forme de WebJob seul ou liez-le à un projet web afin qu’il soit déployé automatiquement lorsque vous déployez le projet web. Pour lier les projets, Visual Studio inclut le nom du projet compatible avec les tâches web dans un fichier webjobs-list.json dans le projet web.

Diagram showing WebJob project linking to web project

Prérequis

Installez Visual Studio 2022 avec la charge de travail du développement Azure.

Activer le déploiement de WebJobs pour un projet d’application console

Deux options s'offrent à vous :

  • Activation d'un déploiement automatique avec un projet web.

    Configurez un projet d’application console existant afin qu’il soit déployé automatiquement sous forme de WebJob lorsque vous déployez un projet web. Utilisez cette option lorsque vous voulez exécuter votre tâche web dans la même application web que celle dans laquelle vous exécutez l’application web liée.

  • Activation d'un déploiement sans projet web.

    Configurez un projet d’application console existant pour déployer en tant que WebJob seul, sans lien avec un projet web. Utilisez cette option lorsque vous voulez exécuter une tâche web dans une application web seule, sans application web s’exécutant dans cette dernière. Vous pouvez utiliser cette méthode pour mettre à l’échelle vos ressources WebJob indépendamment de vos ressources d’application web.

  1. Cliquez avec le bouton droit sur le projet web dans Explorateur de solutions, puis sélectionnez Ajouter>Projet existant en tant que WebJob Azure.

    Existing Project as Azure WebJob

    La boîte de dialogue Ajouter une tâche web Azure s'affiche.

  2. Dans la liste déroulante Nom du projet, sélectionnez le projet d’application console à ajouter sous forme de WebJob.

    Selecting project in Add Azure WebJob dialog box

  3. Remplissez la boîte de dialogue Ajouter un WebJob Azure, puis sélectionnez OK.

  1. Cliquez avec le bouton droit sur le projet d’application console dans Explorateur de solutions, puis sélectionnez Publier en tant que WebJob Azure.

    Publish as Azure WebJob

    La boîte de dialogue Ajouter une tâche web Azure s'affiche avec le projet sélectionné dans la zone Nom du projet .

  2. Remplissez la boîte de dialogue Ajouter un WebJob Azure, puis sélectionnez OK.

    L'Assistant Publier le site Web s'ouvre. Si vous ne voulez pas publier immédiatement, fermez l'Assistant. Les paramètres que vous avez saisis sont enregistrés au cas où vous souhaiteriez déployer le projet.

Créer un projet compatible avec les tâches web

Pour créer un projet pour WebJobs, utilisez le modèle de projet d’application console et activez le déploiement de WebJobs comme expliqué dans la section précédente. Vous pouvez également utiliser le modèle de nouveau projet de tâche web :

  • Utiliser le modèle de nouveau projet WebJobs pour une tâche web indépendante

    Créez un projet et configurez-le pour qu'il se déploie seul sous forme de tâche web, sans lien avec un projet web. Utilisez cette option lorsque vous voulez exécuter une tâche web dans une application web seule, sans application web s’exécutant dans cette dernière. Vous pouvez utiliser cette méthode pour mettre à l’échelle vos ressources WebJob indépendamment de vos ressources d’application web.

  • Utiliser le modèle de nouveau projet WebJobs pour une tâche web liée à un projet web

    Créez un projet configuré pour être déployé automatiquement sous forme de WebJob lorsque vous déployez un projet web dans la même solution. Utilisez cette option lorsque vous voulez exécuter votre tâche web dans la même application web que celle dans laquelle vous exécutez l’application web liée.

Notes

Le modèle de nouveau projet WebJobs installe automatiquement les packages NuGet et inclut le code dans Program.cs pour le Kit de développement logiciel (SDK) WebJobs. Si vous ne souhaitez pas utiliser le Kit de développement logiciel (SDK) WebJobs, supprimez ou modifiez l’instruction host.RunAndBlock dans Program.cs.

  1. Sélectionnez Fichier>Nouveau>Projet. Dans la boîte de dialogue Créer un nouveau projet, recherchez et sélectionnez WebJob Azure (.NET Framework) pour C#.

  2. Suivez les instructions précédentes pour transformer le projet d’application console en projet WebJobs indépendant.

  1. Cliquez avec le bouton droit sur le projet web dans Explorateur de solutions, puis sélectionnez Ajouter>Nouveau projet de WebJob Azure.

    New Azure WebJob Project menu entry

    La boîte de dialogue Ajouter une tâche web Azure s'affiche.

  2. Remplissez la boîte de dialogue Ajouter un WebJob Azure, puis sélectionnez OK.

Fichier webjob-publish-settings.json

Lorsque vous configurez une application console pour un déploiement WebJobs, Visual Studio installe le package NuGet Microsoft.Web.WebJobs.Publish et stocke les informations de planification dans un fichier webjob-publish-settings.json du dossier Propriétés du projet WebJobs. Voici un exemple de ce fichier :

{
  "$schema": "http://schemastore.org/schemas/json/webjob-publish-settings.json",
  "webJobName": "WebJob1",
  "startTime": "null",
  "endTime": "null",
  "jobRecurrenceFrequency": "null",
  "interval": null,
  "runMode": "Continuous"
}

Vous pouvez modifier ce fichier directement. Visual Studio est doté d'IntelliSense. Le schéma de fichier est stocké à l’adresse https://schemastore.org où vous pouvez le consulter.

Fichier webjobs-list.json

Lorsque vous liez un projet compatible avec des tâches web à un projet web, Visual Studio stocke le nom du projet de tâches web sous le nom de fichier webjobs-list.json dans le dossier Propriétés du projet web. La liste peut contenir plusieurs projets WebJobs, comme illustré dans l’exemple suivant :

{
  "$schema": "http://schemastore.org/schemas/json/webjobs-list.json",
  "WebJobs": [
    {
      "filePath": "../ConsoleApplication1/ConsoleApplication1.csproj"
    },
    {
      "filePath": "../WebJob1/WebJob1.csproj"
    }
  ]
}

Vous pouvez modifier ce fichier directement dans Visual Studio, grâce à IntelliSense. Le schéma de fichier est stocké à l’adresse https://schemastore.org.

Déployer un projet WebJobs

Lorsqu’il est lié à un projet web, un projet WebJobs est déployé automatiquement avec ce dernier. Pour plus d’informations sur le déploiement du projet web, consultez Guides pratiques>Déployer l’application dans le volet de navigation gauche.

Pour déployer un projet WebJobs seul, cliquez avec le bouton droit sur le projet dans Explorateur de solutions et sélectionnez Publier en tant que WebJob Azure.

Publish as Azure WebJob

Pour une tâche web indépendante, l'Assistant Publier le site Web utilisé pour les projets web s'affiche, mais avec moins de paramètres modifiables.

Boîte de dialogue Ajouter un WebJob Azure

La boîte de dialogue Ajouter un WebJob Azure vous permet d’entrer le nom du WebJob et le paramètre du mode d’exécution de votre WebJob.

Add Azure WebJob dialog box

Certains champs de cette boîte de dialogue correspondent aux champs de la boîte de dialogue Ajouter un WebJob du portail Azure. Pour plus d’informations, consultez Exécuter des tâches en arrière-plan avec WebJobs dans Azure App Service.

Informations sur le déploiement de WebJob :

  • Pour plus d’informations sur le déploiement en ligne de commande, consultez la page Activation de la ligne de commande ou de la livraison continue de tâches web Azure.

  • Si vous déployez un WebJob et que vous décidez ensuite d’en modifier le type et de le redéployer, supprimez le fichier webjobs-publish-settings.json. Dans ce cas, Visual Studio affiche à nouveau les options de publication, ce qui vous permet de modifier le type de WebJob.

  • Si vous déployez une tâche web et que vous modifiez ultérieurement le mode d'exécution continue en non continue ou vice-versa, Visual Studio crée une tâche web dans Azure lorsque vous procédez à un nouveau déploiement. Si vous modifiez d’autres paramètres de planification, mais que vous conservez le même mode d’exécution ou passez du type Planifié au type À la demande, Visual Studio met à jour la tâche existante plutôt que d’en créer une.

Types de tâches web

Le type d’un WebJob peut être déclenché ou continu :

  • Déclenché (par défaut) : Un WebJob déclenché démarre en fonction d’un événement contraignant, d’une planification ou lorsque vous le déclenchez manuellement (à la demande). Il s’exécute sur une instance unique où l’application web s’exécute.

  • Continu : Un WebJob continu démarre immédiatement lorsque le WebJob est créé. Il s’exécute sur toutes les instances d’application web mises à l’échelle par défaut, mais peut être configuré pour s’exécuter en tant qu’instance unique via settings.job.

Notes

Une application Web peut expirer après 20 minutes d’inactivité, et seules les demandes adressées à l’application Web réelle peuvent réinitialiser le minuteur. L’affichage de la configuration de l’application dans le portail Azure ou l’envoi de requêtes au site d’outils avancés (https://<app_name>.scm.azurewebsites.net) ne réinitialise pas le minuteur. Si vous configurez l’application web qui héberge votre travail pour s’exécuter en continu, selon une planification ou pour utiliser des déclencheurs en fonction des événements, activez le paramètre Toujours activé dans la page Azure Configuration de votre application web. Le paramètre Always on permet de s’assurer que ces types de tâches Web s’exécutent de manière fiable. Cette fonctionnalité est disponible uniquement dans les niveaux tarifaires De base, Standard et Premium.

Planification d’une tâche web déclenchée

Lorsque vous publiez une application console sur Azure, Visual Studio définit le type de WebJob sur Déclenché par défaut et ajoute un nouveau fichier settings.job au projet. Pour les types de WebJob déclenchés, vous pouvez utiliser ce fichier pour définir une planification de l’exécution de votre WebJob.

Utilisez le fichier settings.job pour définir une planification de l’exécution de votre tâche web. L’exemple suivant s’exécute toutes les heures entre 9 h et 17 h :

{
    "schedule": "0 0 9-17 * * *"
}

Ce fichier se trouve à la racine du dossier WebJobs avec le script de votre WebJob, par exemple wwwroot\app_data\jobs\triggered\{job name} ou wwwroot\app_data\jobs\continuous\{job name}. Quand vous déployez un WebJob à partir de Visual Studio, marquez les propriétés du fichier settings.job comme Copier si plus récent.

Si vous créez un WebJob à partir du portail Azure, le fichier settings.job est créé pour vous.

Expressions CRON

Un projet WebJobs utilise les mêmes expressions CRON pour la planification que le déclencheur de minuteur dans Azure Functions. Pour plus d’informations sur la prise en charge de Cron, consultez Déclencheur de minuteur pour Azure Functions.

Notes

Le fuseau horaire par défaut utilisé pour exécuter les expressions CRON est le Temps universel coordonné (UTC). Pour que votre expression CRON s’exécute sur un autre fuseau horaire, créez un paramètre d’application nommé WEBSITE_TIME_ZONE pour votre application de fonction. Pour plus d’informations, consultez Fuseaux horaires NCRONTAB.

Référence settings.job

Les paramètres suivants sont pris en charge par les tâches web :

Paramètre Type Description
is_in_place Tous Autorise le WebJob à s’exécuter sur place sans être d’abord copié vers un dossier temporaire. Pour en savoir plus, consultez la section Répertoire de travail WebJob.
is_singleton Continue Exécutez uniquement le WebJob sur une seule instance lors d’un scale-out. Pour plus d’informations, consultez Set a continuous job as singleton (Définir une tâche continue comme singleton).
schedule Déclenchée Exécutez la tâche web selon une planification basée sur CRON. Pour plus d’informations, consultez Expressions NCRONTAB.
stopping_wait_time Tous Permet de contrôler le comportement d’arrêt. Pour plus d'informations, consultez Arrêt correct.

Exécution en continu

Si vous activez Always On dans Azure, vous pouvez utiliser Visual Studio pour modifier le WebJob pour qu’il s’exécute en continu :

  1. Si ce n’est déjà fait, publiez le projet sur Azure.

  2. Dans l’Explorateur de solutions, cliquez avec le bouton droit sur le projet, puis sélectionnez Publier.

  3. Dans la section Paramètres, choisissez Afficher tous les paramètres.

  4. Dans la boîte de dialogue Paramètres du profil, choisissez Continu pour Type de WebJob, puis choisissez Enregistrer.

    Publish Settings dialog box for a WebJob

  5. Sélectionnez Publier dans l’onglet Publier pour republier le WebJob avec les paramètres mis à jour.

Étapes suivantes