Comparaisons IoC

Quelle IoC prendre en compte lors du développement d’un projet d’application Web ASP.NET et quels sont les avantages de différentes IoC?

  1. ObjectBuilder
  2. Unité
  3. Spring.NET

Ce n’est pas dans votre liste mais pensez à regarder Castle Windsor

Nombre d’installations telles que les usines de support de sorte que le produit d’usine soit injecté, pas l’usine elle-même ou l’installation Wcf pour l’injection d’un proxy ou la création d’un hôte avec des dépendances

Possède une interface agréable et fluide pour le câblage d’éléments individuels, mais il est préférable d’utiliser une convention pour le câblage automatique, de sorte que vous n’ayez pas à répertorier chaque composant.

Quelques autres fonctionnalités intéressantes:

  • Requiert une seule DLL depuis la nouvelle révision.
  • Prend en charge l’injection de listes et de tableaux via les résolveurs de sous-dépendance

Voici un sondage réalisé cette année montrant l’IoC favorisée. L’unité semble être au top mais c’est probablement parce qu’il s’agit d’un produit Microsoft et que les ateliers Microsoft l’accepteront par défaut.

Nous utilisons StructureMap sur un projet ASP.NET MVC et l’avons trouvé extrêmement utile. Le seul inconvénient est la documentation limitée. Le câblage automatique fonctionne très bien et nécessite très peu de configuration si vous utilisez des conventions ssortingctes pour nommer vos classes et interfaces, par exemple:

public interface ISomething { ... } public class Something: ISomething { ... } 

Avant cela, nous utilisions Spring.NET, bien que nous l’ayons abandonné car il effectue beaucoup d’autres tâches (non IoC) dont nous n’avions pas vraiment besoin et qui nécessitaient une configuration XML complexe pour faire ce dont nous avions besoin. En tant que conteneur IoC, cela fonctionnait bien et était très flexible.

Ce que je recommanderais, c’est que le codage permette l’utilisation de IoC – nous utilisons des interfaces partout. Cela aide vraiment les tests unitaires et tous les avantages que cela apporte.

Le contenu de Unity dans MVC3 a également l’air intéressant mais n’a pas encore eu la chance de le jouer.

Je doute que beaucoup de gens en aient utilisé plus de deux ou trois, et d’après mon expérience assez limitée avec Unity et Ninject, le résultat final ne diffère pas beaucoup. Ils ont des options légèrement différentes pour configurer les mappages, et je suis sûr que certaines des fonctionnalités les plus avancées diffèrent, mais elles sont probablement rarement utilisées. À la fin de la journée, les exigences de base pour un conteneur IoC ne sont pas si compliquées – vous pouvez très facilement vous en servir.

Le plus important, c’est que vous utilisez un motif IoC, la marque que vous choisissez n’a probablement aucun impact significatif sur la qualité de l’application obtenue.

Pour ce que ça vaut, je recommanderais Ninject, si seulement parce que c’est très léger.