2010-04-22 6 views
0

J'essaie de comprendre comment DI fonctionne exactement. J'utilise actuellement Windsor comme conteneur DI. J'utilise ceci pour charger mes services dynamiquement dans le code sans référence directe. Mais j'ai un changement de comportement et je veux en savoir un peu plus sur la gestion des instances utilisant DI.Gestion d'instance avec injection de dépendances (DI)

J'ai un projet d'application web, voici un service WCF utilisant PerCall comme instancemode. Cela signifie, nouvelle instance/appel. Dans ce WCF, j'appelle un service (chargé via DI) et ce service appelle un autre service (encore chargé via DI). Le WCF est une nouvelle instance dans le domaine d'application, mais qu'en est-il des services. Ils sont aussi de nouvelles instances? Ce conteneur DI est-il partagé entre toutes les instances WCF et les services de ce conteneur sont-ils également des instances uniques?

Quelqu'un peut-il clarifier?

+0

Vous aurez probablement plus de réponses utiles si vous acceptez des réponses de vos questions précédentes –

+0

Désolé pour cela, mais si vous regardez mes messages précédents, alors vous verrez que je n'ai reçu la bonne réponse. Et ce n'est pas que j'ai posé autant de questions ici. Je sais que je peux promouvoir des réponses sur d'autres posts, mais je n'ai pas beaucoup de temps pour passer en revue les autres posts. Désolé mais ce n'est pas fait intentionnellement. – Sven

Répondre

1

Il est difficile de répondre lorsque votre description est trop vague. Quelques points cependant:

  • Les composants ne doivent pas «partager» le conteneur. Les composants ne doivent jamais faire référence au conteneur.

  • Avoir une instance de conteneur racine pour l'ensemble de votre application. Dans webapp, vous instanciez et configurez le programme dans ApplicationStart et laissez-le faire son travail. Méfiez-vous de ne pas dépendre de composants à durée de vie plus courte. Par exemple, les composants singleton ne doivent pas être dépendants des composants transitoires.

+0

Il semble vraiment que j'ai besoin d'apprendre ce qui se passe exactement dans le conteneur. Actuellement, au démarrage de l'application, je crée ce conteneur en fonction de ce qui se trouve dans mon fichier de configuration. (les services). Quand j'ai besoin d'un service, je le passe au constructeur. Là la magie se passe, j'obtiens une instance de ce service. Mais combien de temps cette instance reste-t-elle en vie? Par exemple si j'utilise un service dans le contrôleur MVC. Combien de temps le contrôleur reste-t-il en direct? Jusqu'à ce que la demande soit faite? – Sven

+0

Cela dépend du style de vie. Pourquoi ne regardez-vous pas la documentation et le guide de l'utilisateur? http://castleproject.org/container/documentation/v21/index.html –

Questions connexes