2009-06-24 3 views
12

J'ai une configuration de conteneur d'injection de dépendances dans mon application et je pense que composer le conteneur chaque fois qu'une requête de service WCF arrivera sera inefficace. Quelqu'un peut-il m'expliquer, pour un service WCF hébergé par http/IIS, quel est le cycle de vie du service? Si je peux comprendre cela, je peux prendre une décision éclairée sur où le conteneur doit être stocké, instancié, détruit, etc.Quel est le cycle de vie d'un service WCF (http) hébergé par IIS?

Répondre

23

Si votre InstanceContextMode est Percall, la classe de service sera créé à partir de zéro pour chaque requête entrante, puis éliminé quand il est fait.

Si votre InstanceContextMode est PerSession, la classe de service sera créé et utilisé pour desservir un client donné pendant toute la durée de la session (ou jusqu'à ce qu'un « InactivityTimeout » est rencontrée, ou une erreur se produit).

Si votre InstanceContextMode est unique (singleton), sera créé la classe de service lorsque la première demande est et restera en mémoire tant que les demandes continuent d'affluer en, tant qu'aucune erreur se produit et pas InactivityTimeout est atteint.

Alors, voilà! Bien sûr, le mode d'accès simultané (pour PerSession et Single services) va également entrer en jeu pour rendre les choses juste un peu plus « intéressant »

+0

Nice! Merci, exactement la réponse que je voulais. –

+2

Pour définir cela, vous ajoutez un ServiceBehaviorAttribute à votre classe de service. Ceci est le mien qui correspond bien avec ninject: [ServiceBehavior (InstanceContextMode = InstanceContextMode.PerCall)] – Twisted

0

Cela dépend de votre ServiceBehavour. Spécifiquement this et this.

1

Comme vous le mentionnez que vous essayez d'intégrer instanciation de service WCF avec un conteneur d'injection de dépendance, Je voudrais juste dire que j'ai eu une expérience très positive en utilisant le Castle WCF Integration Facility pour faire exactement cela.

Il est spécifique au conteneur d'injection de dépendances Castle Windsor mais étant open source, vous pouvez regarder à l'intérieur et comprendre certains des défis et des solutions fournis.

Questions connexes