Bases de WCF(Parte 1/N)

Hola qué tal a todos? Bueno, vamos a hablar algo distinto de WPF, muchos me han pedido algo acerca de WCF, y aquí les traigo, una serie de artículos con los cuales, espero puedan ir aprendiendo sobre esta tecnología 😉 .

Windows Communication Foundation(WCF de ahora en adelante), es un modelo de programación unificado para la creación de aplicaciones distribuidos. Se trata de crear, alojar y consumir servicios. Es acerca de estándares e interoperabilidad, además de la productividad de los desarrolladores. En este post vamos a discutir las bases de WCF.

Antes que nada, un poco de historia:

evolucionWCF

Como se puede apreciar, han existido en la historia, diferentes maneras de comunicación entre computadoras, pasando por COM(para comunicación de componentes en una sola máquina), DCOM(para componentes distribuidos), COM+(evolución de DCOM), Enterprise Services, Web Services(que podría decirse que es lo que está de moda hoy en día), etc, etc, etc. Bien, como podéis ver, tenemos muchísimas tecnologías disponibles para la comunicación, un gran problema de esto es que la persona que quisiera hacer uso de estas tecnologías, debía tener en claro qué quería para poder escoger la mejor tecnología a implementar, y conocer la tecnología obviamente.

¿Cuál es la solución? Bueno, pues Microsoft, lanzó con el framework 3.0, una tecnología llamada WCF, la cual permite que podamos hacer uso de las tecnologías anteriormente mostradas, de una manera sencilla y con un modelo unificado:

unionWCF

Comencemos…

Antes que nada, es necesario que nos familiaricemos con algunos términos, para tener una mejor comprensión de la tecnología:

Servicio: Un conjunto de Endpoints que proveen capacidades usables a los clientes.

Endpoint: Un recurso en la red, al cual pueden ser enviados mensajes.

Ahora bien, los clientes acceden a las capacidades, mandando mensajes a los Endpoints, los cuales están en formato de acuerdo al contrato que han acordado tanto el cliente como el servicio. Los servicios, están a la escucha de mensajes, especificados en la dirección especificada por el endpoint, esperando como dijimos antes, mensajes con el formato acordado.

image

Un cliente, necesita conocer el ABC del Endpoint: Addres (Dirección), Binding (Enlace), Contract (Contrato).

"A" es para direccion, el donde en la red. la dirección a la cual los mensajes deben ser enviados para que el endpoint los reciba, por parte del cliente. Por ejemplo, para HTTP, la dirección sería algo como http://servidor/servicio/; para TCP, sería algo como net.tcp://servidor:8080/servicio.

"B" es para binding, el cómo. El binding define el canal(channel) usado para comunicarse con un endpoint. Los canales son el medio por los cuales los mensajes pasan a través de una aplicación WCF. Un canal está compuesto de una serie de binding elements. El nivel mas bajo de un binding element, es el de transporte, el cual entrega los mensajes a través de la red. Entre estos, encontramos varios como HTTP, TCP, MSMQ, etc. Sobre este nivel, se encuentran binding elements que especifican la seguridad y transacciones.

"C" es para contratos, el qué. Define las capacidades ofrecidas por el endpoint. El contrato define las operaciones que un endpoint expone y los formatos de los mensajes que las operaciones requieren. Los contratos de operaciones mapean a los métodos de la clase que implementan el endpoint, incluyendo la firma de los parámetros pasados dentro y fuera de los métodos.

image

En esta imagen, podemos observar cómo un Servicio WCF está formado por varios Endpoints, los cuales a su vez, tienen un Address, un Binding y un Contract. Como la comunicación es generalmente bidireccional, los clientes también alojan un Endpoint, el cual recibirá los mensajes de regreso del servicio.

Lo servicios, tienen comportamientos que controlan la seguridad, transacciones y otros. Estos se implementan a través de atributos.

Para el descubrimiento del servicio, existe un endpoint de infraestructura llamado MEX (no, jaja, no se refiere a México), que significa Metadata Exchange Endpoint. Este endpoint es accesible por los clientes, para obtener el WSDL (Web service Definition Language). Generalmente, el MEX es llamado cuando en visual studio, le das click en “Add Service Reference”. Después de que el WSDL es obtenido, dos objetos son obtenidos, una clase proxy en el lenguaje del proyecto y un archivo app.config. El proxy refleja la firma de las operaciones del endpoint de tal forma que el cliente pueda llamar sencillamente el endpoint. El archivo app.config, especifica los bindings.

En el próximo artículo, crearemos nuestro primer servicio WCF, mientras, preocúpate por aprender los términos que se han mencionado, con lo cual se te facilitará en gran manera, todo lo que viene jeje.

Salu2

Héctor Pérez

Deja un comentario

Tu dirección de correo electrónico no será publicada.