2010-09-28 12 views
1

Dites que j'ai une application WCF simple que le client appelle afin d'obtenir un nombre. Il n'y a pas beaucoup de traitement et le contrat de service est attribué en tant que SessionMode = SessionMode.NotAllowed.Références pour le cycle de vie d'un service WCF

Quand le constructeur est-il appelé? Quand l'objet est-il détruit? Un constructeur est-il appelé par requête?

Y a-t-il des documents de référence ou des ressources qui contiennent cette information? Je n'arrive pas à le trouver.

Répondre

1

WCF est hébergé par IIS et donc soumis à ses règles de durée de vie. Une classe de service, en elle-même, sera probablement créée et détruite au besoin dans l'application; la classe sera construite à la réception d'une demande, la méthode appelée, et le résultat retourné, après quoi l'objet quittera la portée et sera éliminé/finalisé. Toutefois, le projet contenant votre service ressemble à une application Web ActiveServer.NET ordinaire à IIS (consultez le fichier Global.asax qui doit s'y trouver, il contient une classe de type HttpApplication et représente le point d'entrée de l'application que IIS peut utiliser pour le contrôler) et IIS maintiendra un «pool» de ces applications pour gérer les demandes provenant de plusieurs clients. Tant que les demandes ne cessent d'arriver, et qu'IIS ne décide pas qu'une application a été "périmée" et l'actualise ou l'ensemble du pool, l'application continuera à s'exécuter. Ainsi, toutes les classes statiques que vous déclarez, par exemple votre conteneur IoC singleton, ou tout ce que vous ajoutez à une classe HttpApplication dérivée que vous utilisez comme type enfant, resteront en mémoire jusqu'à ce que l'application soit recyclée.