51 votes

Comparaison de Castle Windsor, Unity et StructureMap

Dans un suivi de Krzysztof déclaration qui Windsor fait beaucoup plus que les autres du Cio, j'ai voulu comprendre comment ces du Cio s'empilent les uns contre les autres et les avantages/les installations supplémentaires que le château de Windsor offre.

Existe-il des comparaisons? Quelqu'un peut-il m'aider à comprendre les fonctionnalités supplémentaires que le Château de Windsor offre sur les autres du Cio

48voto

Mauricio Scheffer Points 70470

Voir ici et ici pour une jolie technique approfondie comparaison de plusieurs conteneurs IoC, bien que quelque peu obsolète maintenant (ils sont de avant de Windsor 2.0)

Cependant, je ne pense pas qu'il y a vraiment de tout essentiel des fonctionnalités qui Windsor offre et d'autres contenants ne le font pas. Windsor, StructureMap, Spring.NET ont été autour depuis plusieurs années et ont été utilisés dans de nombreux projets au cours de ces années, ils sont donc très mature maintenant. Nouveaux conteneurs, comme Autofac, l'Unité, Ninject et SimpleInjector appuyer sur l'expérience précédente de sorte qu'ils ne manquent pas de ces caractéristiques essentielles.

Maintenant, le plus subjective partie de la réponse: j'aime à penser que Windsor est un beau mélange de convivialité, de l'extensibilité et de modules d'intégration.

Convivialité: par exemple, vous pouvez utiliser XML et/ou le code d'enregistrement (il a aussi une API fluent comme la plupart des contenants de nos jours).

Extensibilité: Beaucoup de points d'extension que vous pouvez utiliser pour personnaliser ou remplacer à peu près de tout comportement par défaut.

Intégration: Windsor dispose de nombreux équipements (modules) qui permettent une intégration facile avec d'autres frameworks/librairies. D'autres intégrations inclure ASP.NET MVC, MonoRail, Workflow Foundation, NServiceBus, MassTransit, Rhino Service de Bus, Quartz.Net, SolrNet, SolrSharp, Windows Services de Télécopie.

Cette série d'articles couvre beaucoup de subtilités et de points d'extension de Windsor.

Notez que je ne suis pas en disant que d'autres contenants n'offrent pas les mêmes choses! Même si vous avez choisi l'un d'entre eux et, plus tard, vous avez découvert il en manque une certaine intégration, il n'est généralement pas difficile de coder vous-même.

Bottom line: je ne pense pas que vous pouvez vous tromper avec l'un des principaux Cio conteneurs, aussi longtemps que vous la structure de votre code correctement (par exemple, éviter les le service localisateur anti-modèle).

19voto

Krzysztof Kozmic Points 19262

Pour moi il y a deux fonctionnalités qui tue de Windsor que je ne crois pas que la plupart des autres conteneurs offrent.

  • Capacité à travailler dans un conteneur de façon agnostique - cela signifie que votre conteneur peut bootstrap tout le code pour vous et vous pouvez profiter pleinement de ses fonctionnalités riches sans jamais référence à des Château de.*.dll assemblées dans votre infrastructure assemblées. C'est grâce à des fonctionnalités telles que les Paresseux Composant Chargeurs, DynamicParameters et Tapé Usine de Facilité, qui ne sont pas de contrainte de prendre avantage de fonctionnalités avancées du récipient, tout en évitant manuellement codage de la couche d'intégration, ou en utilisant le Service de localisation, qui comme @ploeh écrit, c'est un anti-modèle.

  • très riche extensibilité/extensions de l'écosystème qui peut vous donner vraiment puissantes capacités et de réduire considérablement la quantité de code de plomberie que vous avez à écrire. Cela peut ne pas sembler très puissant, mais vous permettra d'apprécier une fois que vous profiter de choses comme la mfa dans un projet et dans l'autre vous ne serez pas en mesure de l'utiliser. L'extensibilité de la partie qui signifie que tout Windsor n'essaie pas (c'est son objectif de conception) pour résoudre tous les problèmes que vous pourriez avoir de la boîte, il est très extensible, ce qui signifie que vous pouvez modifier et de le tordre pour faire presque tout ce que vous pourriez avoir besoin.

Sauf que je viens de passer à aime la façon dont Windsor fonctionne à peu près comme prévu (contrairement à certains autres conteneurs) et la façon dont il résout le peu de choses. Par exemple, la création décorées de services est très simple. J'ai aussi comme c'est couramment de l'enregistrement de l'API, qui fonctionne très bien pour les deux scénarios simples, et n'est pas trop tordu et compliqué quand vous voulez faire quelque chose d'avancé. Et beaucoup d'autres petites choses bien qu'ici, les choses peuvent être assez subjective.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X