Pregunta

Para comenzar mi servicio WCF, uso lo siguiente:

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

En algún momento esto creará una instancia de MyServiceClass. ¿Creará una sola instancia o una instancia por solicitud?

¿Fue útil?

Solución

Si desea restringirlo a una sola instancia, puede instanciar su clase de servicio afuera y pasar la instancia al servicio de servicio:

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

Otros consejos

Por defecto, es una instancia por solicitud, pero podría cambiar esto. Por ejemplo, podrías escribir el tuyo IinstanceProvider y administrar la vida de la clase de servicio usted mismo.

Todas estas respuestas son correctas, pero parecen más complejas de lo que está preguntando. Los conceptos básicos de si crea una instancia por llamada, por sesión o singleton están controlados por el InstancecontextMode que es un atributo en su clase de servicio. Empiece a leer allí.

Creará instancia por solicitud. Si desea una sola instancia, puede usar una clase estática. La clase estática existe para la vida útil de la aplicación. No se reinstantan cada vez que hay una llamada o se realiza una nueva conexión WCF.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top