Nous avons réalisé le TP au fur et à mesure des commits, c'est à dire que certaines réponses aux questions des parties précédentes ont été supprimées en fonction de leur utilité dans la partie suivante.
Choix de .NET 8 (lts), finalement comme les fonctions nouvelle de ce runtime vis-à-vis de la version 6 utilisée pour les Azure functions ne sont pas utilisée il ne devrait pas y avoir de problème de partoabilité.
Pour le benchmark, nous utilisons 8 images générées par Copilot, nous leur appliquons un effet peinture à l'huile OilPaint
de la librairie ImageSharp
.
Le gain de temps que j'ai mesuré ne semble pas extrêmement significatif, il me semble que c'est parce que la paraléllisation à été lancée aussi sur les lectures/écriture dans le système de fichier, ce qui me semble moins paraléllisable.
Cas de test, nous avons pris beaucoup de temps pour installer et faire fonctionner le setup de test d'Azure function en local (avec l'outil Core Tools, que l'extension Azure manipule seule, donc pas besoin de connaître la CLI de Core Tools), difficultée rencontrée : il faut ajouter les caractères d'échappement avant les doubles guillemets dans l'option
--data '{\"name\":\"Azure\"}'
.
Commande utilisée pour la fonction Azure de test en local :
curl.exe -i
-X POST http://localhost:7071/api/ResizeHttpTrigger
-H "content-type: application/json"
-H "Accept: application/json"
-d '{ \"name\":\"AzureBoy\"}'
Cela permet simplement de faire fonctionner le template de code C# qui est généré automatiquement.
Implémentation de la fonction de resizing :
Après implémentation de la fonction de resizing, nous avons continué à utiliser PowerShell avec curl.exe
mais nous n'arrivions pas à ouvrir le fichier output.jpeg
qui était pourtant bien reçu (l'appllication Photos n'arrivait pas à afficher le contenu, j'ai laissé ce genre de fichier à l'adresse sample1/img/output.txt).
Après adaptation sur WSL2 (Debian) avec la commande :
curl --data-binary "@robot.jpeg" -X POST "http://$(hostname).local:7071/api/ResizeHttpTrigger?h=100&w=100" -v > output.jpeg
A noter qu'il faut remplacer localhost par $(hostname).local
pour accéder aux port de l'hôte depuis WSL.
Ici le lien vers un ZIP qui contient la vidéo démonstration des éléments ci-dessus : https://drive.google.com/file/d/1cW_6Its2cbYUiFWoxDPJ5P5KO7SXj48l/view?usp=drive_link
La difficultée principale rencontrée ici est qu'il fallait désactiver la segmentation des données au niveau de la requête HTTP.
Le lien vers la vidéo de test : https://drive.google.com/file/d/1rHIvGF-UcMDRvtS4qOoawA7Z5_r0JNPu/view?usp=sharing