février
2008
- Pascal Belaud – Microsoft France
Lorsqu’on développe une application pour un projet, on fait ses petites couches habituelles, Design – Core – Data, et on en est très satisfait car le code est bien séparé, on a fait nos belles classes avec les meilleures concepts orientés objets… Franchement, on est fière du boulot accompli.
Puis vient le jour où l’application doit être munie de nouvelles fonctionnalités et à moins d’avoir conçu notre application pour qu’elle soit extensible facilement, on ne rigole plus. Comme vous venez de le lire, pourquoi ne pas avoir conçu notre application pour qu’elle soit extensible ? Si chaque fonctionnalité pouvait être vue comme un composant autonome, on pourrait faire en sorte que ces fameux composants puissent étendre l’application à l’infini.
Rassurez-vous, Microsoft a vraiment bien préparé le travail pour nous avec le Framework 3.5 et l’arrivée de deux nouveaux namespace, System.Addin et System.Addin.Contract. En résumé grossier, votre application sera considérée comme un hôte et de l’autres côté vous aurez vos addins que votre hôte pourra charger. Mieux encore, votre hôte pourra devenir addin si vous vous placé du côté d’un addin qu’il aura chargé et qui désirera manipuler son hôte… Vous me suivez toujours ? Ne vous inquiétez pas, ça m’a fait le même effet pendant la présentation de Pascal :). Tout ceci va être possible grâce à un système de contrat mais je vous passe tous les détails car Florian vous les expliquera bien mieux que moi via son article « Mettez des add-ins dans votre application avec le Framework 3.5 » dont vous trouverez le lien plus bas.
Autre problèmatique, et si un jour un addin passe à une nouvelle version ou bien que l’hôte est modifié, on fait comment, me direz-vous ? Là, on est en plein dans le versionning et cette problématique peut être supportée pour que votre programme reste compatible. Bien sûr, ça ne va pas se faire tout seul, il n’y a rien de magique la-dedans. Tout ça pourra être résolu grâce à des adaptateurs que vous devrez développer pour permettre cette compatibilité. Une fois de plus, je vais rester très vague mais vous aurez toutes les infos dans l’article dont je vous ai parlé : il vous faudra écrire un adaptateur côté hôte pour accéder au contrat. C’est là que vous aller prendre des décisions sur comment se comporter en fonction des différentes versions. Petit exemple :
- Votre application v1 communique avec un addin en v1 et lui donne 2 paramètres attendus – Nom et Prénom.
- Ce même addin en v2 demande un troisième paramètre qui est Age.
- Comment notre application en v1 va-t-elle pouvoir manipuler notre addin en v2 ?
C’est là qu’il faut intervenir au niveau de l’adaptateur pour prendre une décision sur : comment se comporter ? Les possibilités sont diverses, soit vous préfererez lancer une exception car ce cas n’est pas envisageable, ou alors, vous passerez un âge par défaut… Tout est possible, c’est vous qui avez le choix.
Tout ce que je viens d’expliquer s’applique aussi à l’adaptateur côté addin.
Cependant, tout ce système nécessite assez de code qui peut être plus ou moins lourd à écrire en fonction de la complexité de votre application. Mais rassurez-vous, l’équipe qui a développé ce framework d’addin met à disposition un outil pour « pondre » tout le code à votre place. Cet outil est Pipeline Builder et est disponible en libre téléchargement sous CodePlex… Il n’est pas encore parfait car toujours en CTP mais il vous fera économiser déjà pas mal de temps. Par contre, pour ceux qui désirent réellement comprendre comment ce système d’addin fonctionne, Pascal l’a dit lui même pendant la session, il faut faire tout soi même la première fois. Vous allez vous torturer l’esprit mais une fois que vous y serez arrivé, ce framework n’aura presque plus aucune secret pour vous.
(Si certains ont quelques problèmes avec l’installation de Pipeline Builder, n’hésitez pas à me le dire au travers de billet, je vous communiquerai la procèdure)
En conclusion, je tire mon chapeau à Pascal pour le naturel et la décontraction dont il a fait preuve durant cette présentationc je ne regrette vraiment pas d’y avoir assisté.
Les liens à ne pas rater :
Mettez des add-ins dans votre application avec le Framework 3.5 par Florian Casabianca
Blog de la team qui a développé le framework d’addins (en anglais)
Téléchargez Pipeline Builder sur CodePlex
Le blog de Pascal Belaud
1 Commentaire + Ajouter un commentaire
Déménagement
Next Microsoft CEO
Articles récents
- Changement d’adresse de ce blog
- Article : les nouveautés de C# 5.0
- Modèle Entity Framework généré avec SQL Server 2008 et utilisé sous SQL Server 2005
- Les photos, vidéos et cadeaux des TechDays 2011
- La première journée en ligne sur TechDays TV
- Suivez les TechDays 2011 comme si vous y étiez sur la chaîne TechDays TV
- Téléchargez le programme des conférence des TechDays 2011
- Dernier jour des TechDays = plus de chance de remporter des cadeaux sur le stand de dvp !
- Venez à notre rencontre lors des TechDays 2011
- Les flux à ne pas rater lors des TechDays 2011
- Les TechDays 2011 s’invite sur votre smartphone Windows Phone 7
- Exclu des cadeaux du concours Developpez.com lors des TechDays 2011
- Ouverture de la galerie d’images sur notre site des TechDays
- Partagez votre expérience des Microsoft TechDays
- Grand concours Microsoft “FAN des TechDays 2011” : épisode 2 !
- Mettez-vous aux couleurs des TechDays 2011 !
- Developpez.com aux TechDays 2011
- Le Challenge Azure 2010 est fini !
- Suivez la keynote de la pdc10 en direct sur internet à 18h !
- MVP Visual C# 2010 – 2011 !!!
Quelles différences avec Mono.Addins ?
Microsoft se serait-il « inspiré » de ce travail « libre et gratuit » qui existe depuis un petit moment ? Certes, Mono.Addins n’est qu’en version 0.3…
Peux-t-on utilisé ces espaces de nom (System.Addin) sans forcément installer la toute dernière version de framework (3.5 en l’occurrence) (car pour dans certain cas, la contrainte du dotnet 1.1 est imposée (ne serait-ce que par la non-volonté de Microsoft de mettre sur XP la v2.0 pour tout le monde…))
En tous cas, merci de l’info et des explications.