- 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