c# - WCF: ¿Qué es un ServiceHost?
wcf console host (2)
Como actualmente estoy aprendiendo a usar los Servicios de WCF, constantemente encuentro tutoriales en Internet que mencionan el uso de ServiceHost
al usar un Servicio de WCF.
¿Qué es exactamente este ServiceHost
?
En mi proyecto actual, estoy usando un servicio WCF y haciendo referencia a él desde mi aplicación, y cada vez que quiero consumirlo desde mi aplicación, simplemente instalo 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 abriéndolo antes de consumir el método y cerrándolo después con Open
y Close
)
Mi servicio WCF es host en mi IIS y solo .svc
a .svc
desde mi aplicación para instanciar el ServiceClient
.
Entonces, ¿por qué y dónde se utiliza ServiceHost
?
La implementación de su servicio es solo una clase .NET; necesita tener un entorno de tiempo de ejecución para poder ejecutarlo de alguna manera. Para eso sirve el ServiceHost: cargará su clase de servicio, configurará los puntos finales y los receptores de canales y todo eso, y así le dará a su clase de servicio un "ecosistema" para vivir y operar.
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 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; simplemente lo hacen de forma automática detrás de escena, y "bajo demanda", cada vez que aparece una solicitud para su servicio WCF.
Bagazo
Un ServiceHost básicamente le proporciona todo lo que necesita para alojar 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. Consulte el código de ejemplo de MSDN para saber cómo configurar un ServiceHost en una aplicación de consola .