Créer votre première fonction durable en C#

Durable Functions est une extension d’Azure Functions qui vous permet d’écrire des fonctions avec état dans un environnement serverless. L’extension gère l’état, les points de contrôle et les redémarrages à votre place.

Cet article explique comment utiliser Visual Studio Code pour créer et tester en local une fonction durable « Hello world ». Cette fonction orchestre et chaîne des appels à d’autres fonctions. Vous pouvez ensuite publier le code de la fonction dans Azure. Ces outils sont disponibles dans le cadre de l’extension Azure Functions de Visual Studio Code.

Capture d’écran d’une fenêtre Visual Studio Code avec une fonction durable.

Prérequis

Pour suivre ce tutoriel :

Si vous n’avez pas d’abonnement Azure, créez un compte gratuit Azure avant de commencer.

Créer votre projet local

Dans cette section, vous utilisez Visual Studio Code pour créer un projet Azure Functions local.

  1. Dans Visual Studio Code, appuyez sur F1 (ou Ctrl/Cmd+Maj+P) pour ouvrir la palette de commandes. Dans la palette de commandes, recherchez et sélectionnez Azure Functions: Create New Project....

    Capture d’écran de la fenêtre de projet de fonction.

  2. Désignez un emplacement de dossier vide pour votre projet et choisissez Sélectionner.

  3. Suivez les invites et fournissez les informations suivantes :

    Prompt Valeur Description
    Sélectionner un langage pour votre projet d’application de fonction C# Créez un projet de fonctions C# local.
    Sélectionner une version Azure Functions v4 Vous voyez cette option uniquement quand les outils Core Tools ne sont pas déjà installés. Dans le cas présent, les outils Core Tools sont installés la première fois que vous exécutez l’application.
    Sélectionner un modèle pour la première fonction de votre projet Ignorer pour le moment
    Sélectionner la façon dont vous souhaitez ouvrir votre projet Ouvrir dans la fenêtre active Ouvre à nouveau Visual Studio Code dans le dossier que vous avez sélectionné.

Visual Studio Code installe la solution Azure Functions Core Tools, si nécessaire. Il crée également un projet d’application de fonction dans un dossier. Ce projet contient les fichiers config host.json et local.settings.json.

Ajouter des fonctions à l’application

Les étapes suivantes utilisent un modèle pour créer le code de fonction durable dans votre projet.

  1. Dans la palette de commandes, recherchez et sélectionnez Azure Functions: Create Function....

  2. Suivez les invites et fournissez les informations suivantes :

    Prompt Valeur Description
    Sélectionner un modèle pour votre fonction DurableFunctionsOrchestration Créer une orchestration Durable Functions
    Fournir un nom de fonction HelloOrchestration Nom de la classe dans laquelle les fonctions sont créées
    Fournir un espace de noms Company.Function Espace de noms de la classe générée
  3. Lorsque Visual Studio Code vous invite à sélectionner un compte de stockage, choisissez Sélectionner un compte de stockage. Suivez les invites et fournissez les informations suivantes pour créer un compte de stockage dans Azure :

    Prompt Valeur Description
    Sélectionner un abonnement nom de votre abonnement Sélectionner votre abonnement Azure
    Sélectionner un compte de stockage Création d’un nouveau compte de stockage
    Entrer le nom du nouveau compte de stockage nom unique Nom du compte de stockage à créer
    Sélectionner un groupe de ressources nom unique Nom du groupe de ressources à créer
    Sélectionner un emplacement region Sélectionner une région proche de vous

Une classe contenant les nouvelles fonctions est ajoutée au projet. Visual Studio Code ajoute également la chaîne de connexion du compte de stockage à local.settings.json, et une référence au package NuGet Microsoft.Azure.WebJobs.Extensions.DurableTask dans le fichier de projet .csproj.

Ouvrez le nouveau fichier HelloOrchestration.cs pour afficher le contenu. Cette fonction durable est un exemple de chaînage de fonctions simple avec les méthodes suivantes :

Méthode FunctionName Description
RunOrchestrator HelloOrchestration Gère l’orchestration durable. Dans ce cas, l’orchestration démarre, crée une liste et ajoute le résultat des trois appels de fonctions à la liste. À la fin des trois appels de fonctions, elle retourne la liste.
SayHello HelloOrchestration_Hello La fonction retourne « hello ». Cette fonction contient la logique métier actuellement orchestrée.
HttpStart HelloOrchestration_HttpStart Fonction déclenchée par HTTP qui démarre une instance de l’orchestration et retourne une réponse d’état de vérification.

Maintenant que vous avez créé un projet de fonction et une fonction durable, vous pouvez tester la fonction sur votre ordinateur local.

Tester la fonction en local

Azure Functions Core Tools vous permet d’exécuter un projet Azure Functions sur votre ordinateur de développement local. Vous êtes invité à installer ces outils la première fois que vous démarrez une fonction dans Visual Studio Code.

  1. Pour tester votre fonction, définissez un point d’arrêt dans le code de la fonction d’activité SayHello et appuyez sur F5 pour démarrer le projet d’application de fonction. La sortie de Core Tools est affichée dans le panneau Terminal.

    Notes

    Pour plus d’informations sur le débogage, consultez Diagnostics Durable Functions.

  2. Dans le panneau Terminal, copiez le point de terminaison de l’URL de votre fonction déclenchée via HTTP.

    Capture d’écran de la fenêtre de sortie locale Azure.

  3. Utilisez un outil tel que Postman ou cURL, puis envoyez une requête HTTP POST au point de terminaison de l’URL.

    La réponse est le résultat initial de la fonction HTTP, qui nous indique que l’orchestration durable a bien été démarrée. Il ne s’agit pas encore du résultat final de l’orchestration. La réponse contient plusieurs URL utiles. Pour le moment, demandons l’état de l’orchestration.

  4. Copiez la valeur de l’URL pour statusQueryGetUri, collez-la dans la barre d’adresse du navigateur, puis exécutez la requête. Vous pouvez également continuer à utiliser Postman pour envoyer la requête GET.

    La requête interroge l’instance d’orchestration pour obtenir l’état. Vous devez obtenir une réponse définitive, qui nous montre que l’instance s’est achevée et comprend les sorties ou les résultats de la fonction durable. Voici comment il se présente :

    {
        "name": "HelloOrchestration",
        "instanceId": "9a528a9e926f4b46b7d3deaa134b7e8a",
        "runtimeStatus": "Completed",
        "input": null,
        "customStatus": null,
        "output": [
            "Hello Tokyo!",
            "Hello Seattle!",
            "Hello London!"
        ],
        "createdTime": "2020-03-18T21:54:49Z",
        "lastUpdatedTime": "2020-03-18T21:54:54Z"
    }
    
  5. Pour arrêter le débogage, appuyez sur Maj + F5 dans Visual Studio Code.

Après avoir vérifié que la fonction s’exécute correctement sur votre ordinateur local, il est temps de publier le projet sur Azure.

Connexion à Azure

Avant de pouvoir créer des ressources Azure ou de publier votre application, vous devez vous connecter à Azure.

  1. Si vous n’êtes pas déjà connecté, choisissez l’icône Azure dans la barre d’activité. Puis, dans la zone Ressources, choisissez Se connecter à Azure....

    Capture d’écran de la connexion à la fenêtre Azure dans VS Code.

    Si vous êtes déjà connecté et que vous pouvez voir vos abonnements existants, accédez à la section suivante. Si vous n’avez pas encore de compte Azure, choisissez Créer un compte Azure.... Les étudiants peuvent choisir Créer un compte Microsoft Azure for Students....

  2. Quand vous y êtes invité dans le navigateur, choisissez votre compte Azure, puis connectez-vous à l’aide de vos informations d’identification de compte Azure. Si vous créez un compte, vous pouvez vous connecter une fois votre compte créé.

  3. Une fois la connexion réussie, vous pouvez fermer la nouvelle fenêtre de navigateur. Les abonnements qui font partie de votre compte Azure sont affichés dans la barre latérale.

Créer l’application de fonction dans Azure

Dans cette section, vous créez une application de fonction et les ressources associées dans votre abonnement Azure.

  1. Sélectionnez l’icône Azure dans la barre Activité. Ensuite, dans la zone Ressources, sélectionnez l’icône + et choisissez l’option Créer une application de fonction dans Azure.

    Créer une ressource dans votre abonnement Azure

  2. Quand vous y êtes invité, indiquez les informations suivantes :

    Prompt Sélection
    Sélectionner un abonnement choisissez l’abonnement à utiliser. Vous ne verrez pas cette invite si vous n’avez qu’un abonnement visible sous Ressources.
    Entrer un nom global unique pour l’application de fonction Tapez un nom valide dans un chemin d’URL. Le système vérifie que le nom que vous tapez est unique dans Azure Functions.
    Sélectionner une pile d’exécution Choisissez la version du langage que vous avez exécutée localement.
    Sélectionnez un emplacement pour les nouvelles ressources Pour de meilleures performances, choisissez une région proche de vous.

    L’extension montre l'état des ressources individuelles au fur et à mesure qu’elles sont créées dans Azure, dans le panneau Azure : journal d’activité.

    Journal de création de ressource Azure

  3. Quand la création est terminée, les ressources Azure suivantes sont créées dans votre abonnement. Les ressources sont nommées en fonction du nom de votre application de fonction :

    • Un groupe de ressources, qui est un conteneur logique pour les ressources associées.
    • Un compte Stockage Azure standard, qui conserve l’état et d’autres informations spécifiques à vos projets.
    • Une application de fonction, qui fournit l’environnement d’exécution de votre code de fonction. Une application de fonction vous permet de regrouper des fonctions en une unité logique pour faciliter la gestion, le déploiement et le partage des ressources au sein du même plan d’hébergement.
    • Un plan App Service, qui définit l’hôte sous-jacent pour votre application de fonction.
    • Une instance Application Insights connectée à l’application de fonction, qui suit l’utilisation de vos fonctions dans l’application.

    Une notification s’affiche après que votre application de fonction a été créée et que le package de déploiement a été appliqué.

    Conseil

    Par défaut, les ressources Azure nécessaires à votre application de fonction sont créées d’après le nom d’application de fonction que vous indiquez. Par défaut, elles sont également créées dans le même nouveau groupe de ressources avec l’application de fonction. Si vous souhaitez personnaliser les noms de ces ressources ou réutiliser des ressources existantes, vous devez plutôt publier le projet à l’aide des options de création avancées.

Déployer le projet dans Azure

Important

Le déploiement vers une application de fonction existante remplace toujours le contenu de cette application dans Azure.

  1. Dans la zone Ressources de l’activité Azure, recherchez la ressource d’application de fonction que vous venez de créer, cliquez avec le bouton droit sur la ressource, puis sélectionnez Déployer sur l’application de fonction....

  2. Quand vous êtes invité à remplacer les déploiements précédents, sélectionnez Déployer pour déployer le code de votre fonction sur la nouvelle ressource de l’application de fonction.

  3. Une fois le déploiement terminé, sélectionnez Afficher la sortie pour afficher les résultats de la création et du déploiement, y compris les ressources Azure que vous avez créées. Si vous manquez la notification, sélectionnez l’icône de cloche dans le coin inférieur droit pour la voir de nouveau.

    Capture d’écran de la fenêtre Afficher la sortie.

Tester votre fonction dans Azure

  1. Copiez l’URL du déclencheur HTTP à partir du panneau Sortie. L’URL qui appelle la fonction déclenchée via HTTP doit être au format suivant :

    https://<functionappname>.azurewebsites.net/api/HelloOrchestration_HttpStart

  2. Collez cette nouvelle URL de requête HTTP dans la barre d’adresse de votre navigateur. Vous devez obtenir la même réponse d’état que lorsque vous avez utilisé l’application publiée.

Étapes suivantes

Vous avez utilisé Visual Studio Code pour créer et publier une application de fonction durable C#.

Cet article explique comment utiliser Visual Studio 2022 pour créer et tester en local une fonction durable « Hello World ». Cette fonction orchestre et chaîne des appels à d’autres fonctions. Vous allez ensuite publier le code de la fonction dans Azure. Ces outils sont disponibles dans le cadre de la charge de travail de développement Azure dans Visual Studio 2022.

Capture d’écran d’une fenêtre Visual Studio 2019 avec une fonction durable.

Prérequis

Pour suivre ce tutoriel :

  • Installez Visual Studio 2022. Vérifiez que la charge de travail de développement Azure est également installée. Visual Studio 2019 prend également en charge le développement de fonctions durables, mais l’interface utilisateur et les étapes diffèrent.

  • Vérifiez que l’émulateur Azure est installé et en cours d’exécution.

Si vous n’avez pas d’abonnement Azure, créez un compte gratuit Azure avant de commencer.

Créer un projet d’application de fonction

Le modèle Azure Functions crée un projet qui peut être publié dans une application de fonction dans Azure. Une application de fonctions vous permet de regrouper des fonctions en une unité logique pour faciliter la gestion, le déploiement et le partage des ressources.

  1. Dans Visual Studio, sélectionnez Nouveau>Projet dans le menu Fichier.

  2. Dans la boîte de dialogue Créer un projet, recherchez functions, choisissez le modèle Azure Functions, puis sélectionnez Suivant.

    Capture d’écran de la boîte de dialogue de nouveau projet pour la création d’une fonction dans Visual Studio.

  3. Entrez un Nom du projet, puis sélectionnez OK. Le nom de projet devant être valide en tant qu’espace de noms C#, n’utilisez ni traits d’union, ni traits de soulignement, ni de caractère non alphanumérique.

  4. Sous Informations supplémentaires, utilisez les paramètres spécifiés dans le tableau qui suit l’image.

    Capture d’écran de la boîte de dialogue Créer une application Azure Functions dans Visual Studio.

    Paramètre Valeur suggérée Description
    Worker Functions .NET 6 Crée un projet de fonction prenant en charge .NET 6 et le runtime d'Azure Functions 4.0. Pour plus d’informations, consultez Guide pratique pour cibler la version du runtime Azure Functions.
    Fonction Vide Crée une application de fonction vide.
    Compte de stockage Émulateur de stockage Un compte de stockage est nécessaire pour la gestion des états de fonction durable.
  5. Sélectionnez Créer pour créer un projet de fonction vide. Ce projet contient les fichiers de configuration de base nécessaires à l’exécution de vos fonctions.

Ajouter des fonctions à l’application

Les étapes suivantes utilisent un modèle pour créer le code de fonction durable dans votre projet.

  1. Cliquez avec le bouton droit sur le projet dans Visual Studio et sélectionnez Ajouter>Nouvelle fonction Azure.

    Capture d’écran de l’ajout d’une nouvelle fonction.

  2. Vérifiez qu’Azure Function est sélectionné dans le menu Ajouter, entrez un nom pour votre fichier C#, puis sélectionnez Ajouter.

  3. Sélectionnez le modèle Orchestration Durable Functions, puis sélectionnez Ajouter.

    Capture d’écran de sélection d’un modèle durable.

Une nouvelle fonction durable est ajoutée à l’application. Ouvrez le nouveau fichier .cs pour afficher le contenu. Cette fonction durable est un exemple de chaînage de fonctions simple avec les méthodes suivantes :

Méthode FunctionName Description
RunOrchestrator <file-name> Gère l’orchestration durable. Dans ce cas, l’orchestration démarre, crée une liste et ajoute le résultat des trois appels de fonctions à la liste. À la fin des trois appels de fonctions, elle retourne la liste.
SayHello <file-name>_Hello La fonction retourne « hello ». Cette fonction contient la logique métier actuellement orchestrée.
HttpStart <file-name>_HttpStart Fonction déclenchée par HTTP qui démarre une instance de l’orchestration et retourne une réponse d’état de vérification.

Vous pouvez le tester sur votre ordinateur local maintenant que vous avez créé votre projet de fonction et une fonction durable.

Tester la fonction en local

Azure Functions Core Tools vous permet d’exécuter un projet Azure Functions sur votre ordinateur de développement local. Vous êtes invité à installer ces outils la première fois que vous démarrez une fonction dans Visual Studio.

  1. Pour tester votre fonction, appuyez sur F5. Si vous y êtes invité, acceptez la requête dans Visual Studio pour télécharger et installer Azure Functions Core (CLI) Tools. Vous devrez peut-être activer une exception de pare-feu afin de permettre aux outils de prendre en charge les requêtes HTTP.

  2. Copiez l’URL de votre fonction à partir de la sortie runtime Azure Functions.

    Capture d’écran du runtime local Azure.

  3. Collez l’URL de la requête HTTP dans la barre d’adresse de votre navigateur et exécutez la requête. La capture d’écran suivante du navigateur montre la requête renvoyée par la fonction suite à la demande locale GET :

    Capture d’écran de la fenêtre de navigateur avec statusQueryGetUri appelé.

    La réponse est le résultat initial de la fonction HTTP, qui nous indique que l’orchestration durable a bien été démarrée. Il ne s’agit pas encore du résultat final de l’orchestration. La réponse contient plusieurs URL utiles. Pour le moment, demandons l’état de l’orchestration.

  4. Copiez la valeur de l’URL pour statusQueryGetUri, collez-la dans la barre d’adresse du navigateur, puis exécutez la requête.

    La requête interroge l’instance d’orchestration pour obtenir l’état. Vous devez obtenir une réponse éventuelle qui ressemble à l’exemple ci-dessous. Cette sortie nous indique que l’instance est terminée. Elle contient les sorties ou résultats de la fonction durable.

    {
        "name": "Durable",
        "instanceId": "d495cb0ac10d4e13b22729c37e335190",
        "runtimeStatus": "Completed",
        "input": null,
        "customStatus": null,
        "output": [
            "Hello Tokyo!",
            "Hello Seattle!",
            "Hello London!"
        ],
        "createdTime": "2019-11-02T07:07:40Z",
        "lastUpdatedTime": "2019-11-02T07:07:52Z"
    }
    
  5. Pour arrêter le débogage, appuyez sur MAJ + F5.

Après avoir vérifié que la fonction s’exécute correctement sur votre ordinateur local, il est temps de publier le projet sur Azure.

Publication du projet sur Azure

Vous devez disposer d’une application de fonction dans votre abonnement Azure avant de publier votre projet. Vous pouvez créer une application de fonction directement à partir de Visual Studio.

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

    Capture d’écran de la fenêtre de publication.

  2. Sélectionnez Azure Function App (Windows) pour la cible spécifique, qui crée une application de fonction qui s’exécute sur Windows, puis sélectionnez Suivant.

    Capture d’écran de la fenêtre de publication avec une cible spécifique.

  3. Dans Instance de la fonction, choisissez Créer une application Azure Function....

    Capture d’écran de la création d’une nouvelle instance d’application de fonction.

  4. Créez une instance en utilisant les valeurs spécifiées dans le tableau suivant :

    Paramètre valeur Description
    Nom Nom globalement unique Nom qui identifie uniquement votre nouvelle application de fonction. Acceptez ce nom ou entrez un nouveau nom. Les caractères valides sont a-z, 0-9 et -.
    Abonnement Votre abonnement Sélectionnez l’abonnement Azure à utiliser. Acceptez cet abonnement ou sélectionnez-en un nouveau dans la liste déroulante.
    Groupe de ressources Nom de votre groupe de ressources Groupe de ressources dans lequel vous souhaitez créer votre application de fonction. Sélectionnez Nouveau pour créer un groupe de ressources. Vous pouvez également choisir un groupe de ressources existant dans la liste déroulante.
    Type de plan Consommation Quand vous publiez votre projet dans une application de fonction qui s’exécute dans un Plan Consommation, vous payez uniquement pour les exécutions de votre application de fonction. D’autres plans d’hébergement occasionnent des coûts plus élevés.
    Lieu Emplacement du service d’application Choisissez un Emplacement dans une région proche de chez vous, ou proche d’autres services auxquels vos fonctions ont accès.
    Stockage Azure Compte de stockage à usage général Un compte de stockage Azure est obligatoire par le runtime Functions. Sélectionnez Nouveau pour configurer un compte de stockage universel. Vous pouvez également choisir un compte existant qui répond aux exigences relatives aux comptes de stockage.
    Application Insights Instance Application Insights Vous devez activer l’intégration d’Application Insights pour votre application de fonction. Sélectionnez Nouveau pour créer une instance dans un espace de travail Log Analytics nouveau ou existant. Vous pouvez également choisir une instance existante.

    Capture d’écran de la boîte de dialogue de création d’un service d’application.

  5. Sélectionnez Créer pour créer une application de fonction et les ressources associées dans Azure. L’état de la création des ressources est affiché en bas à gauche de la fenêtre.

  6. Dans Instance de fonction, assurez-vous que Exécuter à partir du fichier de package est coché. Votre application de fonction est déployée en utilisant Zip Deploy avec le mode Exécuter à partir du fichier de package activé. Zip Deploy est la méthode de déploiement recommandée pour votre projet Functions offrant de meilleures performances.

    Capture d’écran de la fin de la création du profil.

  7. Sélectionnez Terminer, puis dans la page Publier, sélectionnez Publier pour déployer le package contenant vos fichiers projet dans votre nouvelle application de fonction dans Azure.

    Une fois le déploiement terminé, l’URL racine de l’application de fonction dans Azure est affichée sous l’onglet Publier.

  8. Dans l’onglet Publier, dans la section Hébergement, choisissez Ouvrir dans le portail Azure. La nouvelle ressource Azure d’application de fonction est alors ouverte dans le portail Azure.

    Capture d’écran du message de réussite de la publication.

Tester votre fonction dans Azure

  1. Copiez l’URL de base de l’application de fonction à partir de la page de profil de publication. Remplacez la partie localhost:port de l’URL que vous avez utilisée lors du test en local de la fonction par la nouvelle URL de base.

    L’URL qui appelle le déclencheur HTTP de la fonction durable doit être au format suivant :

    https://<APP_NAME>.azurewebsites.net/api/<FUNCTION_NAME>_HttpStart

  2. Collez cette nouvelle URL de requête HTTP dans la barre d’adresse de votre navigateur. Vous devez obtenir la même réponse d’état que lorsque vous avez utilisé l’application publiée.

Étapes suivantes

Vous avez utilisé Visual Studio pour créer et publier une application de fonction durable C#.