You are on page 1of 12

WCF, Introduccin y Conceptos Bsicos

Windows Comunication Fundation WCF

WCF, Introduccin y Conceptos Bsicos


Qu es WCF?
Es un modelo de programacin para el desarrollo de aplicaciones con arquitectura orientada a
servicios (SOA). Aplicaciones distribuidas basadas en la comunicacin mediante mensajes.

WCF consiste en un nmero de bibliotecas de clase contenidas en el NET Framework 3, para


desarrollar sistemas que envan mensajes entre servicios y clientes sobre diversos mecanismos de
transporte.

WCF, Ventajas

Proporciona un nico modelo de programacin tipado de aplicaciones distribuidas basadas


en servicios.

Encapsula y simplifica el desarrollo de aplicaciones soportadas por las diversas


tecnologas distribuidas.

Permite el desarrollo de aplicaciones .NET capaces de interoperar con aplicaciones


desarrolladas con otras tecnologas (J2EE, SAP)

WCF, Principales Caractersticas


Una aplicacin WCF est compuesta por:

Clientes: Son aplicaciones que inician la comunicacin.

Servicios: Son aplicaciones que esperan los mensajes de los clientes y responden a los
mismos.
Los mensajes son enviados entre endpoints. Un endpoint es un lugar donde un mensaje es
enviado, o recibido, o ambos.

Un servicio expone uno o ms application endpoints, y un cliente genera un endpoint compatible


con uno de los endpoints de un servicio dado.

La combinacin de un servicio y un cliente compatibles conforman un communication stack.

WCF, Arquitectura

WCF, Pasos para desarrollar un servicio.

1. Definir el Contrato (ServiceContract): Se escribe la interfaz en un lenguaje de


programacin de .NET, agregando los distintos mtodos que sern incluidos en el contrato.

2. Implementar el Contrato (ServiceContract): Se escribe una clase mediante la cual se


implemente la interfaz. Es posible establecer comportamientos a la definicin del servicio
usando el atributo ServiceBehavior.

3. Configurar el Servicio: Especificar los endpoints y metadata del servicio, estos son
definidos en un archivo de configuracin de .NET (Web.config o App.config).
4. Disear una aplicacin Hosting del servicio: Web Host dentro del IIS - Self-Host dentro
de cualquier proceso .NET - Managed Windows Services - Windows Process
Activation Service.

5. Disear una aplicacin cliente del servicio: Ac definiremos las aplicaciones clientes
que consumirn el servicio.
WCF, Desarrollando un Servicio y Cliente ASP.Net
CONSTRUIR y CONSUMIR un servicio WCF en ASP.Net

1. Definir el Contrato (ServiceContract)

2. Implementar el Contrato (ServiceContract)

3. Configurar el Servicio

4. Disear una aplicacin Hosting del servicio

5. Disear una aplicacin cliente del servicio

Antes de comenzar plantemos el ejemplo que queremos implementar:

Imaginemos que deseamos crear un servicio y un cliente web que lo consuma, y que dicho servicio
nos de la posibilidad de:

Obtener todos los pases de una tabla de datos.

Insertar un nuevo pas.

Refrescar la lista de pases.

WCF, Definir el Contrato


En este punto es donde definiremos la interfaz, agregando los distintos mtodos que sern
incluidos en el contrato.
Pero antes deberemos crear una solucin y dentro agregaremos un proyecto que ser
nuestro servicio WCF.
Como vemos en la figura anterior, el proyecto que agregaremos ser una Biblioteca de Servicios
WCF y la nombraremos WCFUtiles.

Lo prximo que haremos ser agregar un Servicio WCF al proyecto


En el archivo sealado es donde definiremos el contrato del servicio, que no es otra cosa que
definir la interfaz que deseamos:

Ntese como en la interfaz ICodigosWS hemos definido 3 mtodos:

ObtenerPaises

AdicionarPais

RefrescarPaises

Estos mtodos sern los que posteriormente implementaremos en la clase final del servicio.

Como algunos de estos mtodos devuelve un tipo de datos List<CodigoWS>, necesitaremos


definir el atributo ServiceKnownType. Dentro del esquema que viaja con el mensaje las
colecciones viajan como array pero es preciso decirle de que tipo es ese array, para que el cliente
pueda posteriormente deserializarlo; es por ello que definimos este atributo.
WCF, Definir o Implementar el
Contrato
Para ello abriremos el segundo archivo CodigosWS.cs, donde definiremos el contrato, que no es
otra cosa que definir una clase que implemente la interfaz creada anteriormente ICodigosWS.

Como veras en la figura, se define una clase CodigosWS, que implementa la interfaz
ICodigosWS. Y se implementan los 3 mtodos definidos en la interfaz. Veamos la definicin de
uno de los mtodos:

WCF, Configurar el Servicio


La configuracin del servicio la hacemos en un fichero de configuracin Web.Config

En esta imagen vemos una configuracin muy bsica, mas adelante en otro articulo profundizar
un poco ms sobre las posibles configuraciones.

En el Web.Config, configuraremos 2 cosas:

El Servicio (<services>):

El nombre del servicio que coincidir con el nombre de la clase.

El behaviorConfiguration que es definido ms abajo en el mismo fichero.

Dentro del servicio debemos identificar un endpoint del mismo:

Definiremos el contrato del endpoint.

El tipo de binding.

El Comportamiento (<behaviors>):

Exponer el metadata para que los clientes puedan ver y consumir el servicio.

Llegados a este punto, podemos compilar el servicio y comprobar si todo ha ido bien, para ello
abriremos el fichero CodigosWS.svc en el explorador, y debemos obtener una imagen como esta
Esto nos indica que nuestro servicio ya esta creado y expuesto hacia el mundo con el metadata
sealado.

WCF, Hosting del servicio


En este punto nada debemos hacer, porque en nuestro ejemplo hemos hosteado el servicio en el
IIS (localhost).

WCF, Disear una aplicacin cliente del servicio


Llegados aqu ya estamos listos para crear el cliente o consumidor del servicio.

Agregaremos a la solucin un nuevo Sitio Web de Tipo ASP.NET, al que nombraremos


ClienteWeb.
Lo primero que haremos en el proyecto ser hacer referencia a nuestro servicio (Agregar
Referencia de Servicio).

Despus crearemos una pgina que contendr un grid con el resultado de nuestro servicio y un
botn que ser el encargado de ir al servicio y obtener la lista de pases:
Despus de creada e implementada la pgina pasaremos a compilar el proyecto para ver si todo
esta bien. Posteriormente pondremos el proyecto y la pgina como elementos de inicio, y
ejecutaremos para ver el resultado, lo cual debera ser algo como esto:

You might also like