Question

Pour lancer mon service WCF, j'utilise ce qui suit:

selfHost = new ServiceHost(typeof(MyServiceClass));
selfHost.Open();

À un certain moment cela va créer une instance de MyServiceClass. Sera-t-créer une seule instance ou une instance par requête?

Était-ce utile?

La solution

Si vous voulez limiter à une seule instance, vous pouvez instancier votre classe de service à l'extérieur et le passage de l'instance dans le ServiceHost:

var myservice = new MyServiceClass();
selfHost = new ServiceHost(typeof(MyServiceClass), myservice); // forces singleton pattern
selfHost.Open();

Autres conseils

Par défaut, il est une instance par demande, mais vous pouvez changer cela. Par exemple, vous pouvez écrire votre propre IInstanceProvider gérer la vie de la classe de service vous.

Toutes ces réponses sont correctes, mais ils semblent plus complexes que ce que vous demandez. Les bases de savoir si elle crée une instance par appel, par session, ou singleton sont contrôlés par le InstanceContextMode qui est un attribut de votre classe de service. Commencez à lire là.

Il crée par exemple par demande. Si vous voulez une seule instance, vous pouvez utiliser une classe statique. Classe statique existe pour la durée de vie de l'application. Ils ne sont pas reinstantiated chaque fois qu'il ya un appel ou une nouvelle connexion WCF est fait.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top