WCF: ¿Qué es un ServiceHost?
-
03-07-2019 - |
Pregunta
A medida que estoy aprendiendo a usar los servicios WCF, me encuentro constantemente con tutoriales en Internet que mencionan el uso de un ServiceHost
cuando utilizo un servicio WCF.
¿Qué es exactamente este ServiceHost
?
En mi proyecto actual, estoy usando un servicio WCF y tengo una referencia a él desde mi aplicación y siempre que quiero consumirlo desde mi aplicación, solo hago una instancia de su ServiceClient
como tal:
new MusicRepo_DBAccess_ServiceClient(new InstanceContext(instanceContext), customBinding, endpointAddress);
Y luego acceda a mis métodos web ( OperationContract
s) desde esa instancia (obviamente, se abre antes de consumir el método y luego se cierra con Abrir
y Cerrar
)
Mi servicio WCF es host en mi IIS y acabo de acceder al .svc
desde mi aplicación para crear una instancia del ServiceClient
.
Entonces, ¿por qué y dónde se usa ServiceHost
?
Solución
Un ServiceHost básicamente le proporciona todo lo que necesita para hospedar un servicio WCF en una configuración que no sea IIS o WAS. Un lugar común para un ServiceHost sería en una aplicación de consola o servicio de Windows. Vea el código de ejemplo de MSDN para cómo configurar un ServiceHost en un aplicación de consola .
Otros consejos
La implementación de su servicio es solo una clase .NET: debe tener un entorno de tiempo de ejecución para que pueda ejecutarse de alguna manera. Para eso es el ServiceHost: cargará su clase de servicio, configurará los puntos finales y los oyentes del canal y todo eso, y le dará a su clase de servicio un "ecosistema". vivir y operar en.
Puede crear una instancia de la clase ServiceHost usted mismo en una aplicación de consola, un servicio de Windows o incluso una aplicación de Winforms, y así hacer que su clase de servicio WCF esté disponible para el mundo exterior, o puede delegar ese trabajo a IIS o WAS. Incluso IIS o WAS utilizarán un ServiceHost para alojar su servicio WCF: solo lo hacen de forma automática y en la demanda " - cada vez que llega una solicitud para su servicio WCF.
Marc