#HowTo Usar Autofac para componer clientes de webservices Wcf (No proxies).

csharp_logo

En este post te voy a explicar como puedes usar Autofac para componer tus instancias de clientes de WebServices Wcf, en C# con .Net Framework.

Primeros Pasos.

Puedes clonar el repositorio GitHub completo del ejemplo aquí. Es un proyecto de Consola que se conecta a un servicio web publico de pruebas Wcf y usa Autofac para la creación del cliente.

¿Qué es Autofac?

Autofac es un contenedor de inversión de dependencias. Es un componente que te ayuda con la tarea de inyectar dependencias (véase los principios de SOLID) y componer objetos complejos.

¿Qué necesito para usar Autofac con Wcf?.

Para poder construir un cliente de web service Wcf es necesario que conozcas los ServiceContracts y los DataContracts que expone el servicio, puedes conocerlos si ya tienes un cliente proxy generado o si accedes al wsdl en caso de que sea público. Sin esta información no te sera posible instancia un cliente.

Paso 0 – El DataContract y el ServiceContract.

Paso 1 – Componiendo el ClientChannelFactory.

Escribí un método de extensión para esta operación.

Paso 2 – Componiendo el ClientChannel.

También delegué esta responsabilidad a un método de extensión.

Paso 3 – Ejecutando el Cliente.

Cree una clase llamada WebServicePrinter para ejemplificar el uso de la inyección por constructor, el único propósito de la clase es invocar el método web y mostrar en pantalla el resultado.

¿Qué pasa con el estado de la conexión del  Web Service?

Puedes usar el método BeginLifeTimeScope del contenedor para definir el periodo de vida del objeto con un bloque using. No es necesario abrir o cerrar conexiones (bueno, aparentemente).

Referencias: https://autofaccn.readthedocs.io/en/latest/integration/wcf.html

 

 

Gustavo Sánchez