Comment les grands C# DI/Cio cadres de comparer?

Au risque d'entrer dans la guerre sainte du territoire, Quelles sont les forces et les faiblesses de ces populaires DI/Cio cadres, et pourrait facilement être considéré comme le meilleur? ..:

  • Ninject
  • L'unité
  • Château.Windsor
  • Autofac
  • StructureMap

Il d'autres DI/Cio de Cadres pour le C# que je n'ai pas listé ici?

Dans le cadre de mon cas d'utilisation, je suis en train de construire un client d'application WPF et WCF/SQL services d'infrastructure, la facilité d'utilisation (en particulier en termes de syntaxe claire et concise), une documentation cohérente, un bon soutien de la communauté et de la performance sont tous des facteurs importants dans mon choix.

Mise à jour:

Les ressources et de dupliquer les questions citées semblent être hors de date, quelqu'un peut-il à la connaissance de tous ces cadres de venir de l'avant et à fournir un aperçu réel?

Je me rends compte que la plupart des avis sur ce sujet est susceptible d'être biaisée, mais je suis en espérant que quelqu'un a pris le temps d'étudier tous ces cadres et de ont au moins un généralement une comparaison objective.

Je suis tout à fait disposée à faire mes propres enquêtes, si cela n'a pas été fait avant, mais j'ai supposé que c'était quelque chose, au moins un peu de personnes l'avaient déjà fait.

Deuxième Mise À Jour:

Si vous avez de l'expérience avec plus d'un DI/conteneur IoC, veuillez les classer et de les résumer les avantages et les inconvénients de ceux-ci, merci. Ce n'est pas un exercice dans la découverte de toutes les obscurs petits contenants que les gens ont fait, je suis à la recherche pour les comparaisons entre le populaire (et active) les cadres.

  • Même question que [Ninject vs Unité de DI ](stackoverflow.com/questions/1054801/ninject-vs-unity-for-di), mais il peut être temps pour un suivi.
  • double possible de [la Comparaison Château de Windsor, de l'Unité et de StructureMap ](stackoverflow.com/questions/2216684/...)
  • Double Possible. stackoverflow.com/questions/4509458/ioc-comparisions-closed. Il y a aussi un lien qui montre la popularité de la Coi dans la réponse. Avoir un coup d'oeil.
  • Je l'ai utilisé sur... 4 projets, les deux premiers étaient vraiment de base, pas de problèmes, la deuxième de deux, l'Unité nous a causé beaucoup de problèmes quand il est venu au constructeur d'injection, de la maintenabilité, de la lisibilité. Nous avons terminé l'extraction de l'Unité des deux et l'a remplacé par StructureMap, constructeur d'injection était mort simple, la configuration était propre et maintenable. Dans mon temps libre, j'ai joué avec AutoFac, mais je trouve ça délicat, ont besoin de la documentation pour mieux le comprendre. Le reste je ne peux que commenter ce que j'ai lu.
  • Un problème que nous avions était avec SSRS, il a été silencieusement à défaut et en parcourant le code, nous ne pouvions pas comprendre pourquoi il n'était pas, à l'exception était ambiguë. Nous avons passé une semaine de l'écriture de rechange pour le faire fonctionner. Finalement, quand nous avons déménagé à StructureMap nous avons eu une autre tentative, et dans les minutes à l'aide de 'ObjectFactory.WhatDoIHave()' nous avons appris que le Cio a été construit avant les assemblées ont été chargés dans le domaine d'application, de sorte que les interfaces n'ont jamais été enregistrés avec les types de béton.
  • De sorte que, avec le " ObjectFactory.AssertConfigurationIsValid()', fait structuremap plus facile à déboguer. StructureMap permet de multiples façons d'être configuré, avec l'Unité nous l'avons fait dans le code, et nous avons essayé de XML, les deux façons abouti à+ de 60 lignes de XML ou de code de configuration. À l'aide de Registres, d'Attributs et de XML que nous avons réduit la configuration, jusqu'à environ 10 lignes et je n'ai pas touché depuis, il était beaucoup plus facile d'obtenir les autres développeurs qui n'avaient jamais utilisé un conteneur IoC avant, à travers StructureMap. Donc, les multiples façons d'être en mesure de configurer StructureMap est à portée de main.
  • Constructeur de l'Injection, je n'ai jamais travaillé de ça... pour les référentiels de nous injecter le NHibernate ISession, j'ai configurer ce type: 'x.Pour<ISession>().HybridHttpOrThreadLocalScoped().Utilisation(réglage d'usine => usine.GetInstance<ISessionFactory>().OpenSession ()); " et c'est ça, chaque référentiel obtient de la même session par demande. Le MVP qui nous a recommandé l'utilisation de l'Unité ne pouvait pas nous dire comment obtenir la même chose. (Je voudrais savoir si ses possible de sorte que quand je suis forcé d'utiliser l'Unité, je peux au moins le faire)
  • re. la résolution d'une instance HTTP Contexte ou TLS, l'Unité ne prend pas en charge cette sortie de la boîte (autant que je sache). Vous devez écrire votre propre vie de manager.
  • Si vous souhaitez un très complète (plus de 100 pages) comparative de traitement du Château de Windsor, StructureMap, Spring.NET, AutoFac, de l'Unité et de la MEF, vous pouvez acheter mon livre: affiliate.manning.com/idevaffiliate.php?id=1150_236
  • Est-il vraiment? DI/Cio est un assez étroit domaine, et peut certainement faire mal ou le bien. Ce n'est pas comme comparer une large technologies comme les IDE ou les Langues. Accordé, tandis que certaines implémentations peuvent atteindre un point où la supériorité est difficile de les distinguer, et elles affichent un niveau d'excellence et d'exhaustivité, il est bien utile de savoir qui elles sont, et si une facette particulière pousse en avant. Ce n'est pas Emacs vs Vim.

InformationsquelleAutor ocodo | 2011-01-03