Quels frameworks C # / .NET Dependency Injection méritent d'être étudiés? Et que pouvez-vous dire de leur complexité et de leur rapidité?
Réponses
Trop de publicités?Je suppose que je pourrais être d'être un peu pointilleux ici, mais il est important de noter DI (Dependency Injection) est un modèle de programmation et est facilitée par l' (mais n'oblige pas) un IoC (Inversion of Control). Cio Cadres de juste faire de la DI beaucoup plus facile, mais ce n'est pas seulement DI qu'ils font, ils fournissent une foule d'autres avantages au-dessus DI.
Cela étant dit, je suis certain de ce que vous demandez: à propos du Cio Cadres: j'ai l'habitude d'utiliser Spring.Net et CastleWindsor beaucoup, mais la vraie douleur dans le beehiind était tout ce fichus de configuration XML vous avez eu à l'écrire! Ils sont assez bien tous les mouvements de cette façon maintenant, mais j'ai commencé à l'aide de StructureMap pour la dernière année ou ainsi, et depuis, il a déménagé à un fluide config en utilisant fortement typé génériques et d'un registre, ma douleur de la barrière à l'aide du Cio a chuté en dessous de zéro! Je reçois un absolu coup de pied, en sachant maintenant que mon Cio config est vérifié à la compilation (pour la plupart) et j'ai rien eu, mais la joie avec StructureMap et de sa vitesse. Je ne dis pas que les autres étaient lents (à l'exécution), mais ils ont été plus difficile pour moi de l'installation et de la frustration souvent remporté le jour.
Je crois qu'ils vont tous vers un plus fortement typé config maintenant - ou au moins donner la possibilité, mais certaines personnes aiment mettre toutes les config en XML - personnellement, je ne peux pas nu, j'ai donc collé à StructureMap maintenant.
Je ne peux pas beaucoup de commentaires sur Ninject sauf que j'ai écouté Nate sur l'un de l'Élevage du Code des podcasts et qu'il est allumé gars, et les screencasts j'ai regardé ont vraiment tenté de me faire la main - peut-être sur le prochain projet est qui sait.
Mise à jour: Dans un suivi de mes commentaires ici, j'ai été en utilisant Ninject (comme promis) sur mon dernier projet et il a été un plaisir absolu à utiliser. Les mots me manquent un peu ici, mais (comme nous le disons dans le royaume-UNI) ce cadre est le Chien. Je le recommande fortement pour tout le vert des champs de projets sur lesquels vous souhaitez être rapidement opérationnel. J'ai eu tout ce que je besoin d'un fantastique ensemble de Ninject des screencasts par Justin Etheredge. Je ne peux pas voir que le rétro-raccord Ninject existants (au dessus de la moyenne) du code d'un problème - mais la même chose peut être dit de StructureMap dans mon expérience. Ça va être un choix difficile entre ces deux, mais je préfère avoir de la concurrence que stagnation et il y a une quantité décente de la saine concurrence.
D'autres Cio screencasts peuvent également être trouvés ici sur Dimecasts.
Hope qui aide,
Rob G
Cela dépend de ce que vous êtes à la recherche pour, ils ont chacun leurs avantages et leurs inconvénients.
- Spring.NET est le plus mature comme elle vient de le Printemps du monde java. Le printemps est un ensemble très riche de cadre des bibliothèques de l'étendre à l'appui de Web, Windows, etc.
- Le château de Windsor est l'un des plus largement utilisé dans le .NET plate-forme et a le plus grand écosystème, est hautement configurable / extensible, a coutume gestion du cycle de vie, AOP, a inhérente NHibernate soutien et est tout autour du génial conteneur. Windsor est une partie de l'ensemble de la pile qui comprend Monorail, Active Record, etc. NHibernate elle-même se fonde sur le dessus de Windsor.
- Structure de la Carte est très riche et fine de la configuration par le biais d'un DSL interne.
- Autofac est un conteneur IoC du nouvel âge avec tous c'est inhérente à la programmation fonctionnelle soutien. Il prend également une approche différente de la gestion de durée de vie que les autres. Autofac est encore très nouveau, mais il pousse la barre sur ce qui est possible avec le Cio.
- Ninject j'ai entendu, c'est plus d'os à nu avec un moins, c'est plus de l'approche (entendu pas connu).
- Le plus grand discriminateur de l'Unité est à c'est à partir de et pris en charge par Microsoft (p&p). L'unité a de très bonnes performances, et une grande documentation. Il est également hautement configurable. Il n'a pas toutes les cloches et de sifflets de dire Château / la Structure de la Carte.
Donc en résumé, cela dépend vraiment de ce qui est important pour vous. Je suis d'accord avec les autres sur la va et de l'évaluation et de voir celui qui correspond le. La bonne chose est, vous avez une belle sélection de donuts plutôt que d'avoir d'avoir une gelée. :-)
Autofac. http://code.google.com/p/autofac/ C'est vraiment rapide et plutôt bon. Voici un lien avec des comparaisons (faites après que Ninject a corrigé un problème de fuite de mémoire).
http://www.codinginstinct.com/2008/05/ioc-container-benchmark-rerevisted.html
Ninject est génial. Cela semble vraiment rapide, mais je n'ai fait aucune comparaison. Je sais que Nate, l'auteur, a fait des comparaisons entre Ninject et d'autres frameworks DI et cherche d'autres façons d'améliorer la vitesse de Ninject.
J'ai entendu beaucoup de gens que je respecte dire de bonnes choses à propos de StructureMap et CastleWindsor. À mon avis, ceux-là sont les trois grands à regarder en ce moment.
Je n'ai pas utilisé d'autres frameworks DI en dehors de Unity du groupe Microsoft Patterns & Practices , mais j'ai été assez surpris de voir à quel point il semble léger. Il y a un bon screencast qui décrit les usages courants et m'a permis d'atteindre la vitesse en moins de 30 minutes.