Le cadre d'extensibilité géré (MEF) de .NET 4.0, récemment annoncé, est-il un cadre d'injection de dépendances ? Le Microsoft Unity de Patterns and Practices sera-t-il obsolète dans la version 4.0 ? Comment MEF se compare-t-il à un framework comme Unity ?
Réponses
Trop de publicités?Spécifiquement abordé dans la 2e Keynote du PDC 2008 par Scott Guthrie, le MEF a beaucoup plus à voir avec des choses comme l'extension de Visual Studio 2008 et d'autres applications, sans avoir à utiliser toutes les COM et les anciennes technologies... Une très bonne démonstration de l'extension de l'édition de texte dans VS2008 a été montrée entre autres choses. Commencez environ une heure et 15 minutes dans le keynote du 2ème jour ( http://www.microsoftpdc.com ) et vous obtiendrez des informations directes, mais en gros, si vous voulez "construire une application avec des points d'extension intégrés qui peuvent être facilement découverts et qui prennent en charge la découverte des extensions", alors MEF est ce qu'il vous faut. UNITY est ce qu'il vous faut pour un conteneur IoC de haute qualité qui fait du DI aussi bien que les autres solutions existantes, mais qui s'intègre facilement à l'Enterprise Library.
En ce qui concerne Unity dans la version EL4.0 (maintenant 4.1) http://msdn.microsoft.com/en-us/library/dd203099.aspx ), il s'agit en fait d'un IoC qui se trouve au-dessus de la version 2 d'ObjectBuilder et la version EL4.1 possède des points d'extensibilité pour unifier la configuration de divers blocs d'application EL avec Unity.
MEF vs Unity, c'est comme comparer des pommes et des oranges. Voici quelques podcasts/webcast(s) excellents et spécifiques qui décrivent UNITY dans son intégralité, que je recommande vivement :
DotNetRocks Show #393 http://www.dotnetrocks.com/default.aspx?showNum=393 DNR.tv Show #126 http://www.dnrtv.com/default.aspx?showNum=126
J'ai vu un article qui y faisait penser, mais plus d'informations ( Scott Guthrie à PDC2008 [Video/wmv]) m'a fait penser que c'est plus qu'un cadre d'injection de dépendances. De la le son des choses il peut être utilisé pour l'injection de dépendances mais fait aussi plus.
Voici une conversation sur le MEF/MAF/Unité/Prisme que j'ai trouvé éclairant.
Je voudrais ajouter une ligne mopre que je viens de lire que Le MEF ne fait pas partie de l'inversion de contrôle (car la dépendance est considérée comme synonyme d'IOC) mais il la met en œuvre. . Lorsque nous implémentons l'IOC via des injections de dépendances, nous utilisons généralement Unity, qui aide à découvrir les dépendances statiques, mais MEF nous permet d'augmenter l'extensibilité de notre application sans configurer les composants de manière statique, même s'ils peuvent être découverts au moment de l'exécution. Il existe également d'autres liens qui peuvent vous aider davantage : Différence entre Unity et MEF