2009-10-28 10 views
4

Je cherche des conseils sur la façon de choisir un conteneur IoC pour une application ASP.NET MVC. Quelles sont les différences entre (par exemple) StructureMap, Ninject, Château Windsor, Unity, autofac et autres? Quelqu'un peut-il donner des conseils ou des liens vers des ressources qui pourraient aider à choisir une bibliothèque?différences entre les conteneurs IoC

Mise à jour: il y a une question (Enterprise Library Unity vs Other IoC Containers) qui parle des différences dans l'initialisation des conteneurs IoC.

Mais y a-t-il des différences dans les fonctionnalités, ce qui ferait de certains conteneurs IoC un meilleur choix pour une application ASP.NET MVC?

+0

2009 Question Gardez à l'esprit –

Répondre

5

Voici un blog post utile qui compare les fonctionnalités entre les différents frameworks IOC disponibles dans .Net, je ne sais pas si MVC préfère un conteneur plutôt qu'un autre.

Max

1

Personnellement, je me suis installé sur Autofac. Une chose qui semble vraiment intéressante est la disposition déterministe des ressources.

Cela et il avait l'intégration ASP.Net aussi bien quand je l'ai vérifié. Je devrais regarder d'autres cadres quelque temps mais je n'ai pas eu de problèmes avec ça. Les messages d'erreur qu'il vous donne quand il y a un composant non résoluble est vraiment sympa.

Le mieux est d'essayer des projets avec chacun d'eux. Je suis devenu un vrai fan de faire les configurations en code (autant que possible) et en utilisant des configurations XML comme sauvegarde. Alors faites votre propre liste de priorités et essayez-les.

6

Une chose qui est différent entre les différents conteneurs IoC sont les modes du cycle de vie ou instanciation qui sont pris en charge hors de la boîte (quand créer une nouvelle instance du composant):

  • StructureMap
    • transitoire (appelé par demande), singleton, fil local, par-HttpContext, per-HttpSession, Hybrid
  • Ninject
    • transitoire, singleton, par-fil, par-HttpRequest
  • Château windsor
    • singleton, transitoire, par thread, mis en commun, par-HttpRequest (supplémentaire grâce à des facilités)
  • autofac
    • transitoire (usine), singleton, par-HttpRequest
  • Unité
    • transitoire, singleton, par thread
-1

Personnellement - c'est là cesse POO étant la bonne solution, car il ne gère pas IoC bien. Trouver votre propre solution peut être le meilleur. Personnellement, je roule le mien avec F # - tant que je peux contrôler les deux extrémités.

Le nouveau Rx peut aider à résoudre certains de ces problèmes, mais il ne fait qu'emprunter un bandaid à la programmation fonctionnelle. Je suppose que nous sommes coincés avec des objets comme modèle de base pour certaines choses pendant un certain temps - heureusement, dans les services Web, les objets fonctionnaient si mal que les standards se sont déjà éloignés d'eux vers des interfaces fonctionnelles comme SOAP.

Questions connexes