Prism v4: unité ou MEF?

J'ai téléchargé Prisme v4 et exécuté le programme d'installation. Je suis allé dans le répertoire et j'ai couru les deux fichiers batch suivants:

  • Bureau uniquement-Ouvrez la modularité avec MEF QuickStart.MTD
  • bureau uniquement-Ouvrez la modularité avec Unity QuickStart.MTD

Lorsque je compile ces applications, Je ne vois aucune différence réelle. J'ai cherché MEF vs Unity et j'ai trouvé quelques avantages / inconvénients, mais rien qui indique spécifiquement si l'on est "meilleur" (et je sais que c'est subjective) avec utilisation dans Prism. Je suppose que peut-être si je liste Mes exigences, quelqu'un peut me diriger vers les technologies correctes à utiliser (même si ce N'est pas Prism 4).

  • L'application doit être écrite en WPF (Pas Silverlight).
  • L'application principale sera extrêmement mince.
  • l'application principale utilisera un service Web pour créer le menu des "applications / modules" auxquels une personne a accès.
  • les "apps / modules" seront entièrement contenus dans d'autres bibliothèque.
  • L'application principale obtient des vues et des viewmodels en réfléchissant dans ces DLL.
  • L'application principale doit alimenter les services pour la journalisation, etc. dans ces "applications/modules".

Par exemple:

Un utilisateur de base peut avoir les options suivantes:

  • enregistrement D'adresse ViewOnly

Tous Les articles liés à L'adresse sont dans L'adresse.DLL.

Un utilisateur avancé peut avoir les options de:

  • Nouvelle Adresse enregistrement
  • enregistrement D'adresse Ouverte (mise à jour/suppression)
  • Gérer les utilisateurs

Tous Les articles liés à L'adresse sont dans L'adresse.DLL.
Tous les éléments Gérer liés sont dans Admin.DLL.

L'application ne devrait pas réellement référencer l'une ou l'autre de ces DLL, je prévois d'y réfléchir de sorte que s'il y a 100 modules différents et qu'un utilisateur n'a accès qu'à 2 D'entre eux, seuls 2 d'entre eux sont téléchargés et utilisés. Alors qu'un utilisateur qui a accès à 10 d'entre eux obtient ces 10.

J'ai déjà résolu le téléchargement DLL via WebService. :)

30
demandé sur m-y 2010-12-03 00:43:41

4 réponses

Aucun n'est "meilleur" : ce sont des choses différentes.

IMO votre choix devrait être guidé uniquement par vos besoins. Sur la base des exigences que vous avez affichées ici, je vous suggère d'utiliser MEF, car vous avez des modules contenus dans des dll et l'application principale n'est pas au courant des modules à charger. Ces tâches sont la raison pour laquelle MEF existe.

Quoi qu'il en soit, vous pouvez les utiliser à la fois: MEF pour la modularité et L'unité pour profiter de l'injection de dépendance (testabilité, réutilisabilité,...)

21
répondu onof 2010-12-03 07:55:49

Si tous les modules ne sont pas recompilés en même temps que l'application, alors MEF vous donne beaucoup de façons de faire face à la modification des interfaces dans l'application principale. Sinon MEF Peut être plus complexe que vous avez besoin.

4
répondu Ian Ringrose 2011-02-24 15:52:31

J'utilise Unity depuis un an avec PRISM mais j'ai remarqué de sérieux problèmes de fuite de mémoire. Par conséquent, j'ai décidé de donner PRISM 4 et MEF un aller. Ce que j'ai fait, c'est d'abord convertir mon application pour utiliser PRISM 4 avec Unity. Ensuite, j'ai converti une branche pour utiliser MEF. Cela peut sembler drôle, mais MEF semble gérer la consommation de mémoire et libérer en quelque sorte mieux que L'Unité.

Serait bien d'entendre si d'autres ont fait la même expérience?

2
répondu Michael Ulmann 2011-02-12 00:23:30

En ce qui concerne votre question de savoir si MEF et UNITY peuvent bien fonctionner les uns avec les autres, je peux vous dire qu'ils travaillent vraiment bien les uns avec les autres. J'ai développé une application de preuve de concept qui a utilisé PRISM, Unity et MEF.

2
répondu Khoa 2015-08-10 14:23:03