Tutorial WCF Primera Parte: Conceptos básicos de WCF (Windows Communication Foundation)

En esta primera parte del Tutorial, veremos conceptos básicos pero importantes antes de comenzar a desarrollar nuestra primer aplicación con WCF. En este post no veremos código pero sentaremos las bases con conceptos importantes antes de comenzar con WCF.

Definición:

WCF es un modelo de programación para el desarrollo de aplicaciones con arquitectura orientada a servicios (SOA). Aplicaciones distribuidas basadas en la comunicación mediante mensajes.

Principales Características

Una aplicación WCF está compuesta por:

  • Clientes: Son aplicaciones que inician la comunicación.
  • Servicios: Son aplicaciones que esperan los mensajes de los clientes y responden a los mismos.

Los mensajes son enviados entre endpoints. Un endpoint (veremos más adelante un poco más detallado este concepto ) es un lugar donde un mensaje es enviado, o recibido, o ambos.

Un servicio expone uno o más application endpoints, y un cliente genera un endpoint compatible con uno de los endpoints de un servicio dado.

La combinación de un servicio y un cliente compatibles conforman un communication stack.

Algunos ejemplos de servicios pueden ser:

  • Servicio seguro para procesar transacciones comerciales
  • Un panel de control que sondea los datos de uno o varios servicios y los muestra  lógicamente.
  • Un servicio de chat que permite a dos personas comunicarse e intercambiar datos en tiempo real.

 

Conceptos básicos de WCF

Cuando comenzamos con WCF hay muchos conceptos que deberíamos conocer previamente, por ejemplo algunos son address, binding, contract, endpoint, behavior, etc. Si entendemos estos términos antes de comenzar a programar, nos serán muy útiles cuando usemos WCF, bien veamos estos conceptos a continuación.

Address

La address (dirección), especifica el lugar o donde se encuentra el servicio. Especifica la ruta donde un mensaje será enviado. Todos los servicios son instalados con una dirección especifica.

Una address es normalmente especificada como una URL, donde la primer parte especifica el mecanismo de transporte y la segunda parte determina el lugar donde se encuentra el servicio.

Ejemplo:

http://www.ejemplowcf.com/miServicioWCF/EjemploServicio.svc

El ejemplo anterior  utiliza HTTP como protocolo de transporte, esta localizado en el servidor, www.ejemplowcf.com, y la ruta única al servicio que es miServicioWCF/EjemploServicio.svc

Binding

Bindings son usados para especificar los detalles del transporte, encoding y  protocolo requeridos por los clientes y servicios para comunicarse unos con otros. Los bindings en WCF son usados para la representación de un endpoint. Y un endpoint es un lugar donde los clientes pueden comunicarse con el servicio de WCF.  La forma fácil de que un cliente se comunique con el servicio es usar el mismo binding que el servicio usa.

Un binding esta compuesto por una colección de elementos. Cada elemento describe algunos aspectos de como el servicio se comunicará con el cliente. Un binding debe al menos incluir un elemento de transporte, un message-encoding (este es provisto por el elemento transporte por defecto), y por último una o varias definiciones del elemento de protocolo.

Algunos ejemplos de bindings en WCF son: BasicHttpBinding, WSHttpBinding, etc. Cada uno de estos bindings tiene predefinidos elementos requeridos para una tarea en especial, y están prontos para ser usados en su proyecto. Por ejemplo BasicHttpBinding usa el protocolo HTTP como transporte para enviar mensaje SOAP 1.1 y tiene atributos y elementos como receiveTimeout, sendTimeout, maxMessageSize, etc. Puede usar la configuración por defecto de atributos y elementos  de BasicHttpBinding o puede sobrescribirlos dependiendo de su necesidad.

Contract

Un contract  es un conjunto de especificaciones que define la interfaz de un servicio WCF. Un servicio WCF se comunica con otras aplicaciones de acuerdo a su contrato. Hay muchos tipos de contractos en WCF, tales como Service contract, operation contract, data contract, message contract y fault contract.

El contrato de servicio (Service contract)

Un service contract es la interface de un servicio WCF. Nos dice que puede hacer un servicio. Dentro de estas interfaces, se puede definir una cantidad de métodos o operaciones que especifican las tareas del servicio. Un Servicio WCF tiene que tener al menos un contracto para recibir los pedidos de los clientes que lo consumen.

 El contrato de operación (Operation contract)

Un operation contract esta definido dentro  de un service contract, y define los parámetros y el tipo de retorno de una operación. Una operación puede tomar un dato primitivo por ejemplo un char, un int como parámetro o incluso un mensaje, el cual debería ser definido como un message contract (veremos la explicación de este concepto más abajo).

Tenemos el service contract que es la definición de la interface del servicio, y tenemos el operation contract que es la definición de una operación. La definición del operation contract también define la dirección de la operación (one way, request/replay, duplex).

El contrato de mensajes (Message contract)

Si un operation contract necesita pasar un mensaje como parámetro o retornar un mensaje, el tipo de estos mensajes debe ser definido como message contract. Un message contract define los elementos de un mensaje, como por ejemplo la seguridad del mensaje y también el elemento que debe ir en el cabezal y cuerpo del mismo.

El contrato de datos (data contract)

El data contract son los tipos de datos de un servicio WCF. Todos los tipos de datos usados por el servicio WCF deben ser descriptos en la metadata para habilitar a otras aplicaciones a interoperar con el servicio. Un data contract puede ser usado por un operation contract como parámetro o el tipo de retorno, o puede ser incluso usado por un message contract. Si el servicio WCF solo usa tipos primitivos (int, char, etc) no es necesario definir un data contract.

El contrato de error (fault contract)

SI un operation contract retorna un error al cliente que lo llamo, el cliente debe ser advertido de ese error. Estos tipos de errores son definidos como fault contract.

Endpoint

Los mensajes son enviados entre endpoints. Y los endpoints son el lugar donde los mensajes son enviados y recibidos o ambos, y tienen toda la información requerida para el intercambio de mensajes. Un servicio puede exponer uno o mas endpoints. Cuando necesitamos conectarnos al servicio, la aplicación cliente genera un endpoint que es compatible con el endpoint del servicio.

Un servicio de WCF tiene un binding, un address y un service contract, esto es conocido como el ABC de Windows Communication Foundation.

Behavior

Un behavior es un tipo de configuración para extender la funcionalidad de un componente de WCF. Tenemos muchos tipos de bahaviors en WCF, por ejemplo un service behavior, binding behavior, contract behavior, etc. Los behaviors son configurados en el archivo de configuración de WCF.

 

Hosting

Un servicio WCF es un componente que puede ser llamado por otras aplicaciones. Por esto, el servicio debe ser alojado en un ambiente  para ser usado por otras aplicaciones. El ambiente que aloja nuestro servicio WCF, es una aplicaci’on que maneja y controla el tiempo de vida de nuestro servicio.

Channels (Canales)

Hemos visto previamente que un servicio WCF debe ser alojando en algún ambiente (puede ser una aplicación o un server). La aplicación cliente tiene que especificar los bindings necesarios para conectarse al servicio WCF. Ahora los elementos del binding, son interfaces y deben ser implementados en clases concretas.  Esta implementación de un elemento del binding es lo que llamamos channel.(canal). Un elemento del binding representa una configuración y el channel es la implementación asociada con esa configuración. En resumen, tenemos un channel por cada elemento del binding.

 Metadata

La metadata de un servicio describe las características de un servicio a una entidad externa para poder comunicarse con el servicio. Para explicarlo un poquito más, la metadata puede ser consumida usando la utilidad de SvcUtil.exe el cual genera una clase proxy y la configuración que la aplicación cliente puede usar para interactuar con el servicio.

La metadata que expone el servicio incluye el esquema del documento XML que define el data contract del servicio y los documentos WSDL que describen los métodos del servicio.

 

 

Bueno hasta aquí la primer parte de este tutorial, fue un poquito largo pero fue necesario para explicar conceptos base que son importantes a la hora de empezar con el desarrollo de un servicio WCF. En el próximo post, comenzaremos a codificar y veremos como desarrollar nuestro primer servicio en WCF. Hasta la próxima.

 

Tutorial WCF Segunda Parte: Creando un servicio WCF

Tutorial WCF Tercera Parte: Alojando (Hosting) nuestro Servicio WCF

Tutorial WCF Cuarta Parte: Creando un cliente para consumir nuestro Servicio WCF

The following two tabs change content below.
Admin

Admin

Administrador de Dotnetuy, con más de 20 años de experiencia en el mundo de la informática y el desarrollo de software en diferentes lenguajes, trabajando en backend y frontend, desde sus primeros pasos con clipper cuando comenzaba la década de los 90’s , y continuando con pascal, C, C++, Visual basic, y multiples gestores de bases de datos hasta hoy en día con C# y todas las técnologias relacionadas con .NET.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *