2 votes

Faut-il utiliser le cadre d'extensibilité géré pour consommer des plugins externes ?

Je pense que je vais prendre le modèle MEF. Mais j'ai du mal à voir s'il correspond à ce que j'essaie de faire.

J'ai une application qui fait appel à des plugins tiers pour effectuer un traitement vidéo. Le plugin peut être FFMPEG.exe ou x264.exe, peu importe. Le processus d'appel des plugins se fait par l'intermédiaire du ProcessStartInfo (essentiellement par la ligne de commande) et en passant un certain nombre de paramètres, par exemple

ffmpeg.exe -in "c:\vid.avi"  -out "c:\vid.avi" -Xheight 100 -Xwidth 100
or 
x264.exe -in "c:\vid.avi"  -out "c:\vid.avi" -Yheight 100 -Ywidth 100

Il est évident que chaque plugin aura ses propres jeux de paramètres. Est-il approprié d'utiliser MEF pour que l'interface soit la même quel que soit le plugin utilisé (alebit via un contrat public) ? Si oui, dois-je écrire une classe wrapper pour chaque plugin implémentant le contrat ?

Est-ce la bonne façon d'utiliser le MEF ? D'un côté, j'essaie de rendre mon application extensible en permettant aux clients de choisir leurs plugins. Mais en réalité, je ne suis pas sûr que le MEF ne soit pas excessif et que l'utilisation de fichiers de configuration pour stocker la commande ne soit pas une meilleure approche ?

1voto

Denis Palnitsky Points 6126

Si vous avez la possibilité d'utiliser simplement des fichiers de configuration, ce sera préférable. Cela permettra d'ajouter ou de modifier des plugins sans recompiler. Cela donnera également la possibilité aux utilisateurs expérimentés de modifier les plugins.

1voto

testalino Points 2554

Le MEF est un excellent moyen d'ajouter de l'extensibilité à une application. Il vous suffit de définir une interface dans votre application, de mettre en œuvre cette interface dans le composant externe et d'ajouter un attribut d'exportation à la mise en œuvre. En utilisant l'attribut Import dans votre application, vous pouvez découvrir le composant externe. Voir la documentation pour les détails. Si vous lisez ceci, vous aurez une application fonctionnant avec MEF en moins de 2 heures.

Revenons au sujet : Si vous n'appelez que des applications différentes avec des arguments différents, je n'opterais pas pour MEF car ce serait un peu exagéré. Cependant, il est agréable de travailler avec MEF et si vous aimez expérimenter un peu, vous pouvez toujours l'utiliser pour votre application, juste pour l'expérience d'apprentissage.

0voto

Jim Points 2316

On dirait que la MEF est probablement trop lourde pour ce que vous voulez. Vos plugins sont déjà des applications externes et vous avez déjà un moyen de les appeler. Écrire les wrappers semble juste être plus de travail !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X