vendredi 23 novembre 2007

Tutoriel .net sur les BuildProvider

Ayant délaissé visual studio pour éclipse ces derniers mois, je souhaitait "garder la main" en .net tout en vous montrant une facette bien peu connue de .net : les BuildProviders.

Qu'est-ce qu'un build provider ?

Un build provider se présente sous la forme d'une classe héritant de System.Web.Compilation.BuildProvider et permettant de compiler pendant le développement des fichiers de la solution. Les classes ainsi créées sont accessibles via l'intellisense dans la solution.

Pour bien cerner toute la puissance de cette technologie, je vous propose d'étudier le cas d'un provider permettant de simplifier l'utilisation des sessions utilisateurs.

Trop souvent dans un projet web, les sessions deviennent rapidement un "foure-tout". De plus, c'est une bonne pratique que d'avoir un fichier recensant l'utilisation de la session dans le projet. Nous allons donc créer un build provider qui, à partir d'un fichier xml de la solution, génèreralirer et d'écrire dans la session sans ses soucier du nom des clés ou du casting.

Structure du fichier descriptif de session :


Pour commencer, créez un nouveau site asp.net. Ajoutez à la solution une nouvelle biblothèqueBuildProviderSession" .

Ajoutez ensuite une nouvelle classe nommée BPSession et héritant de System.Web.Compilation.BuildProvider

Nous allons implémenter 3 méthodes de la classe BuildProvider.
  • CompilerType : propriété qui spécifie le type de compilateur à utiliser par visual studio.
  • GenerateCode : méthode dans laquelle nous renverrons le code c# à compiler.



  • GetGeneratedType : méthode ou nous renverrons à visual studio le type généré.





Notre Build Provider est maintenant terminée, nous allons l'utiliser dans le projet web de la solution.

Pour ce faire, rien de plus simplen ajoutez au web.config (créez le si nécessaire) ces quelques lignes (sous system.web) :




La partie extension détermine pour quel types de fichier visual studio appellera notre compilateur.

Vous pouvez maintenant créer dans le répertoire app_code du site web un fichier avec l'extention dvp respectant le schéma du fichier xml précédent.

Après avoir compilé la solution (avec succès normalement), allez simplement dans le code d'une page web, défault par exemple. Et la surprise, notre classe CurrentSession est disponble :



Conclusion

Les BuildProviders sont des outils très puissants. L'exemple que j'ai choisi est simple et son intérêt est limité. Cependant, dans le cadre de développement de frameworks, cette technologie offre un outil sans égal pour simplifier la vie du développeur. Je proposerais plus tard un tutoriel sur l'écriture d'une interface graphique pour générer le fichier descriptif des sessions. Interface qui sera bien sur intégrée à Visual Studio :)

Télécharger la classe BPSession

Aucun commentaire: