viernes, 12 de octubre de 2012

WCF - ServiceHostFactory en IIS - ServiceHost

WCF permite hospedar los servicios en IIS y a su vez nos ofrece la alternativa de autohospedar servicios en aplicaciones de consola, windows forms o incluso hospedarlo en un servicio windows.

En caso que hayamos optado por la opción IIS, en este tipo de aplicaciones generalmente no tenemos el control de la clase ServiceHost y por tanto si queremos modificar algún comportamiento del endpoint o customizar algún aspecto del servicio nos vemos obligados a hacerlo vía web.config.

En este post veremos como usar ServiceHostFactory para tomar el control en runtime de la clase ServiceHost cuando IIS arranca el servicio, de este modo podremos controlar la instancia de ServiceHost en tiempo de ejecución.

En primer lugar crearemos una clase areaTICHostFactory la cual haremos que herede de ServiceHostFactory y suplantaremos el método CreateServiceHost:
namespace areaTIC
{
   public class areaTICHostFactory : ServiceHostFactory
   {
      protected override ServiceHost CreateServiceHost(Type serviceType, Uri[] baseAddresses)
      {
         ServiceHost areaTICHost = base.CreateServiceHost(serviceType, baseAddresses);
      }
    }
}

Una vez tenemos el control de la instancia de ServiceHost podríamos controlar prácticamente cualquier aspecto de nuestro servicio WCF en tiempo de ejecución.

Por último hemos de añadir el siguiente atributo al marcado (markup) del archivo .svc correspondiente al servicio:
<%@ ServiceHost Language="C#" Debug="true" Service="areaTIC.ServicioEjemplo" CodeBehind="ServicioEjemplo.svc.cs" Factory="areaTIC.areaTICHostFactory" %>
Hasta aquí el artículo, más y mejor la semana que viene en areaTIC no dudéis en consultar el archivo tal vez haya algún post que os pueda interesar!


No hay comentarios:

Publicar un comentario