6
votes

Peut-il utiliser MEF sur ASP.NET pour être utilisé pour une injection de dépendance?

Je sais quelle injection de dépendance est en théorie, mais je n'ai jamais réellement utilisé l'injection de dépendance dans aucun de mes projets. Alors considérez-moi d'être un di noob.

La question directe est; MEF peut être utilisé pour une injection de dépendance?

Si cela peut, ma question de suivi est; est-ce une bonne idée d'utiliser Mef pour une injection de dépendance?

Je comprends que ma question de suivi peut être considérée comme subjective. Mais je cherche de meilleures pratiques et des raisons pour lesquelles et contre. Donc, j'espère que ma question de suivi ne brille pas trop de plumes.

Le contexte de tout cela est que je me sens un peu perdu en essayant de déterminer comment faire un cadre de plug-in pour ASP.NET MVC.


1 commentaires

Considérer également le cadre de la turbine MVC


3 Réponses :


1
votes

mef peut, je crois, être utilisé pour une injection de dépendance; Au moins, je l'utilise dans mon propre projet de petite maison WPF actuellement. Je soupçonne que cela pourrait devenir désordonné lorsque vous devez injecter différents types pour une interface pour différents déploiements de votre application, si vous en avez besoin. Il faudrait faire des efforts pour ajouter les bonnes classes à votre catalogue.

où je travaille, en utilisant ASP.NET MVC2, nous utilisons le château Windsor pour une injection de dépendance. Nous utilisons alors de la configuration XML pour initialiser le conteneur. Cela signifie que nous pouvons injecter différents types pour une interface sans avoir à reconstruire.

Je crois que .NET offre une autre option au MEF, également appelée MAF. Il est censé être plus complexe, mais offrir beaucoup plus de contrôle. Je ne sais cependant rien de plus à ce sujet.

(Je ne suis pas très expérimenté (1 an employé), donc si quelqu'un est en désaccord avec quelque chose, ils sont probablement plus corrects)


0 commentaires

8
votes

Comme j'explique dans Mon livre MEF peut être utilisé comme Un conteneur di / fort>, mais dans son incarnation actuelle, il est pas particulièrement bien adapté à la tâche pour la tâche.

mef a été conçu pour traiter Scénarios d'extensibilité , et bien qu'il a beaucoup de fonctionnalités qui se chevauchent, il est assez limité en matière de configuration et de gestion de la vie.


2 commentaires

Pensez-vous que votre livre serait un bon premier pas vers la compréhension de DI? Quelles sont les prérequis?


Le but du livre est d'enseigner à DI, alors oui, je pense que c'est une excellente première étape. Il s'attend à ce que vous ayez quelques années d'expérience avec .NET (C #), et cela ne fait pas mal si vous savez ce qu'est un modèle de conception.



1
votes

Block Glenn (ancien chef de produit de MEF) a répondu à cette FAQ dans un blog post .

La plupart des lacunes mentionnées dans son poste ont été traitées par MEFCONTRIB : Il contient un catalogue supplémentaire et une exportation Mises en œuvre des fournisseurs pour ajouter de la prise en charge des POCOS, des génériques ouverts et de l'interception.

update : le mef2 Aperçu3 ajoute le support Pour les génériques ouverts et Enregistrement sans attribut hors de la boîte. Les API des communiqués d'aperçu ne sont pas définitifs, mais il s'agit d'une bonne indication que ces fonctionnalités seront dans la version suivante (> V4.0) .NET.


1 commentaires

Bon article sur Mef2 MVC Intégration ici: blogs.msdn.com/b/bclteam/archive/2011/11/11/...