Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cet article explique comment 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 Exécuter des tâches en arrière-plan avec webJobs dans Azure App Service.
Vous pouvez choisir de développer une tâche web qui s’exécute en tant qu’application .NET Core ou une application .NET Framework. La version 3.x du Kit de développement logiciel (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 prend uniquement en charge le .NET Framework. La façon dont vous déployez un projet WebJobs est différente pour les projets .NET Core que pour les projets .NET Framework.
Vous pouvez publier plusieurs webJobs sur une seule application web, à condition que chaque tâche web d’une application web ait un nom unique.
WebJobs en tant qu’applications console .NET Core
Avec la version 3.x du Kit de développement logiciel (SDK) Azure WebJobs, vous pouvez créer et publier des tâches web en tant qu’applications console .NET Core. Pour obtenir des instructions pas à pas pour créer et publier une application console .NET Core sur 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 piloté par les événements.
Remarque
Les applications web .NET Core et/ou les webJobs .NET Core ne peuvent pas être associés à des projets web. Si vous devez déployer votre tâche web avec une application web, créez vos tâches web en tant qu’application console .NET Framework.
Déployer dans Azure App Service
La publication d’une tâche web .NET Core sur Azure App Service à partir de Visual Studio utilise les mêmes outils que la publication d’une application ASP.NET Core.
Dans l’Explorateur de solutions, cliquez avec le bouton droit sur le projet, puis sélectionnez Publier.
Dans la boîte de dialogue Publier , sélectionnez Azure pour cible, puis sélectionnez Suivant.
Sélectionnez Azure WebJobs pour une cible spécifique, puis sélectionnez Suivant.
Au-dessus des instances App Service, sélectionnez le bouton plus (+) pour Créer une nouvelle tâche Web Azure.
Dans la boîte de dialogue App Service (Windows), utilisez les paramètres d’hébergement dans le tableau suivant.
Réglage Valeur suggérée Descriptif Nom Nom unique au monde 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 de Service d'Application 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.
Sélectionnez Créer pour créer une tâche web et des ressources associées dans Azure avec ces paramètres et déployer votre code de projet.
Sélectionnez Terminer pour revenir à la page Publier .
WebJobs en tant qu’applications console .NET Framework
Si vous utilisez Visual Studio pour déployer un projet d’application console .NET Framework compatible avec WebJobs, il copie les fichiers runtime dans le dossier approprié de l’application web (App_Data/jobs/continuous pour les tâches web continues et App_Data/travaux/déclenchés pour les tâches web planifiées ou à la demande).
Visual Studio ajoute les éléments suivants à un projet compatible WebJobs :
- Le package NuGet Microsoft.Web.WebJobs.Publish.
- Fichier webjob-publish-settings.json qui contient les paramètres de déploiement et de planificateur.
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 compatible WebJobs.
Déployez un projet en tant que WebJob par lui-même, ou liez-le à un projet web afin qu’il se déploie automatiquement chaque fois que vous déployez le projet web. Pour lier des projets, Visual Studio inclut le nom du projet webJobs dans un fichier webjobs-list.json dans le projet web.
Conditions préalables
Installez Visual Studio 2022 avec la charge de travail de développement Azure.
Activer le déploiement de WebJobs pour un projet d’application console existant
Deux options s'offrent à vous :
Activer le déploiement automatique avec un projet web.
Configurez un projet d’application console existant afin qu’il se déploie automatiquement en tant que WebJob lorsque vous déployez un projet web. Utilisez cette option lorsque vous souhaitez exécuter votre tâche web dans la même application web dans laquelle vous exécutez l’application web associée.
Activer le déploiement sans projet web.
Configurez un projet d’application console existant pour le déployer en tant que WebJob par lui-même, sans lien vers un projet web. Utilisez cette option lorsque vous souhaitez exécuter une tâche web dans une application web elle-même, sans application web s’exécutant dans l’application web. Vous pouvez le faire pour mettre à l’échelle vos ressources WebJob indépendamment de vos ressources d’application web.
Activer le déploiement automatique de WebJobs avec un projet web
Cliquez avec le bouton droit sur le projet web dans l’Explorateur de solutions, puis sélectionnez Ajouter>un projet existant en tant que tâche web Azure.
La boîte de dialogue Ajouter une tâche web Azure s’affiche.
Dans la liste déroulante Nom du projet , sélectionnez le projet d’application console à ajouter en tant que tâche web.
Terminez la boîte de dialogue Ajouter une tâche web Azure , puis sélectionnez OK.
Activer le déploiement de WebJobs sans projet web
Cliquez avec le bouton droit sur le projet d’application console dans l’Explorateur de solutions, puis sélectionnez Publier en tant que Tâche web Azure.
La boîte de dialogue Ajouter une tâche web Azure s’affiche, avec le projet sélectionné dans la zone Nom du projet .
Terminez la boîte de dialogue Ajouter une tâche web 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 entrés sont enregistrés lorsque vous souhaitez déployer le projet.
Créer un projet doté de WebJobs
Pour créer un projet compatible 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. En guise d’alternative, vous pouvez utiliser le modèle de nouveau projet WebJobs :
Utiliser le modèle de nouveau projet WebJobs pour une tâche web indépendante
Créez un projet et configurez-le pour le déployer en tant que WebJob, sans lien vers un projet web. Utilisez cette option lorsque vous souhaitez exécuter une tâche web dans une application web elle-même, sans application web s’exécutant dans l’application web. Vous pouvez le faire 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 déployer automatiquement en tant que WebJob lorsque vous déployez un projet web dans la même solution. Utilisez cette option lorsque vous souhaitez exécuter votre tâche web dans la même application web dans laquelle vous exécutez l’application web associée.
Remarque
Le modèle de nouveau projet WebJobs installe automatiquement les packages NuGet et inclut du 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.
Utiliser le modèle de nouveau projet WebJobs pour une tâche web indépendante
Sélectionnez Fichier>Nouveau>Projet. Dans la boîte de dialogue Créer un projet , recherchez et sélectionnez Azure WebJob (.NET Framework) pour C#.
Suivez les instructions précédentes pour rendre le projet d’application console un projet WebJobs indépendant.
Utiliser le modèle de nouveau projet WebJobs pour une tâche web liée à un projet web
Cliquez avec le bouton droit sur le projet web dans l’Explorateur de solutions, puis sélectionnez Ajouter>un projet Azure WebJob.
La boîte de dialogue Ajouter une tâche web Azure s’affiche.
Terminez la boîte de dialogue Ajouter une tâche web Azure , puis sélectionnez OK.
fichier webjob-publish-settings.json
Lorsque vous configurez une application console pour le déploiement de WebJobs, Visual Studio installe le package NuGet Microsoft.Web.WebJobs.Publish et stocke les informations de planification dans un fichier webjob-publish-settings.json dans le 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 et Visual Studio fournit IntelliSense. Le schéma de fichier est stocké https://schemastore.org et peut être consulté ici.
fichier webjobs-list.json
Lorsque vous liez un projet webJobs à un projet web, Visual Studio stocke le nom du projet WebJobs dans un 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, avec IntelliSense. Le schéma de fichier est stocké sur https://schemastore.org.
Déployer un projet WebJobs
Un projet WebJobs que vous avez lié à un projet web se déploie automatiquement avec le projet web. Pour plus d’informations sur le déploiement de projets web, consultez les guides> pratiquespour déployer l’application dans le volet de navigation gauche.
Pour déployer un projet WebJobs lui-même, cliquez avec le bouton droit sur le projet dans l’Explorateur de solutions , puis sélectionnez Publier en tant que Tâche web Azure.
Pour une tâche Web indépendante, le même assistant Publier le Web utilisé pour les projets Web s’affiche, mais avec moins de paramètres disponibles à modifier.
Boîte de dialogue Ajouter un WebJob Azure
La boîte de dialogue Ajouter une tâche web Azure vous permet d’entrer le nom de la tâche web et le paramètre du mode d’exécution de votre tâche web.
Certains des champs de cette boîte de dialogue correspondent aux champs de la boîte de dialogue Ajouter une tâche web du portail Azure. Pour plus d’informations, consultez Exécuter des tâches en arrière-plan avec WebJobs dans Azure App Service.
Informations de déploiement webJob :
Pour plus d’informations sur le déploiement de ligne de commande, consultez Activation de la ligne de commande ou de la livraison continue d’Azure WebJobs.
Si vous déployez une tâche web, puis décidez de modifier le type de tâche web et de redéployer, supprimez le fichier webjobs-publish-settings.json . Cela entraîne la rééditation des options de publication par Visual Studio, 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 de continu à non continu ou inversement, Visual Studio crée une tâche web dans Azure lorsque vous redéployez. Si vous modifiez d’autres paramètres de planification, mais laissez le mode d’exécution identique ou basculez entre Scheduled et On Demand, Visual Studio met à jour le travail existant au lieu de en créer un.
Types de tâches web
Le type d’une tâche web peut être déclenché ou continu :
Déclenché (valeur par défaut) : une tâche web déclenchée démarre en fonction d’un événement de liaison, selon une planification ou lorsque vous la déclenchez manuellement (à la demande). Il s’exécute sur une seule instance sur laquelle l’application web s’exécute.
Continu : une tâche web continue démarre immédiatement lors de la création de la tâche web. Il s’exécute sur toutes les instances mises à l’échelle de l’application web par défaut, mais peut être configuré pour s’exécuter en tant qu’instance unique via settings.job.
Remarque
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’exécution de demandes sur le site d’outils avancés ne réinitialise pas le minuteur. Si vous définissez l’application web qui héberge votre travail pour qu’elle s’exécute en continu, s’exécutez selon une planification ou utilisez des déclencheurs pilotés par les événements, activez le paramètre Always On dans le volet Configuration Azure 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 webJob déclenchés, vous pouvez utiliser ce fichier pour définir une planification d’exécution pour votre tâche web.
Utilisez le fichier settings.job pour définir une planification d’exécution pour votre tâche web. L’exemple suivant s’exécute toutes les heures de 9 h à 17 h :
{
"schedule": "0 0 9-17 * * *"
}
Ce fichier se trouve à la racine du dossier WebJobs avec le script de votre tâche web, tel que wwwroot\app_data\jobs\triggered\{job name} ou wwwroot\app_data\jobs\continuous\{job name}. Lorsque vous déployez un WebJob à partir de Visual Studio, définissez les propriétés de votre fichier settings.job dans Visual Studio sur Copier si plus récent.
Si vous créez une tâche web à partir du portail Azure, le fichier settings.job est créé pour vous.
Expressions CRON
WebJobs utilise les mêmes expressions CRON pour la planification que le déclencheur du minuteur dans Azure Functions. Pour plus d’informations sur la prise en charge de CRON, consultez Déclencheur de minuteur pour Azure Functions.
Remarque
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 en savoir plus, consultez les fuseaux horaires NCRONTAB.
Référence settings.job
Les paramètres suivants sont pris en charge par webJobs :
| Réglage | Type | Description |
|---|---|---|
is_in_place |
Tous | Permet au WebJob de s’exécuter directement sans être d’abord copié dans un dossier temporaire. Pour plus d’informations, consultez le répertoire de travail WebJob. |
is_singleton |
Continué | 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é | Exécutez la tâche web selon une planification basée sur CRON. Pour plus d’informations, consultez les 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 la tâche web pour qu’elle s’exécute en continu :
Si ce n’est déjà fait, publiez le projet sur Azure.
Dans l’Explorateur de solutions, cliquez avec le bouton droit sur le projet, puis sélectionnez Publier.
Dans la section Paramètres , choisissez Afficher tous les paramètres.
Dans la boîte de dialogue Paramètres du profil , choisissez Continu pour le type de tâche web, puis sélectionnez Enregistrer.
Sélectionnez Publier sous l’onglet Publier pour republier la tâche web avec les paramètres mis à jour.