Veamos un ejemplo práctico, paso a paso, de como CONSTRUIR y CONSUMIR un servicio WCF en ASP.Net.
En el artículo anterior (WCF, Introducción y Conceptos Básicos) comentábamos sobre los pasos para desarrollar un servicio, en este artículo implementaremos cada uno de esos pasos:
- Definir el Contrato (ServiceContract)
- Implementar el Contrato (ServiceContract)
- Configurar el Servicio
- Diseñar una aplicación Hosting del servicio
- Diseñar una aplicación 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 países de una tabla de datos.
- Insertar un nuevo país.
- Refrescar la lista de países.
WCF, Definir el Contrato
En este punto es donde definiremos la interfaz, agregando los distintos métodos que serán incluidos en el contrato.
Pero antes deberemos crear una solución 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 próximo que haremos será agregar un Servicio WCF al proyecto:
En nuestro caso de ejemplo le llamaremos al servicio de WCF “CodigosWS.svc”. Al aceptar se nos crearan automáticamente 3 archivos:
En el archivo señalado es donde definiremos el contrato del servicio, que no es otra cosa que definir la interfaz que deseamos:
Nótese como en la interfaz ICodigosWS hemos definido 3 métodos:
- ObtenerPaises
- AdicionarPais
- RefrescarPaises
Estos métodos serán los que posteriormente implementaremos en la clase final del servicio.
Como algunos de estos métodos 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 métodos definidos en la interfaz. Veamos la definición de uno de los métodos:
WCF, Configurar el Servicio
La configuración del servicio la hacemos en un fichero de configuración Web.Config.
En esta imagen vemos una configuración muy básica, mas adelante en otro articulo profundizaré un poco más 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 más 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 señalado.
WCF, Hosting del servicio
En este punto nada debemos hacer, porque en nuestro ejemplo hemos hosteado el servicio en el IIS (localhost).
WCF, Diseñar una aplicación cliente del servicio
Llegados aquí ya estamos listos para crear el cliente o consumidor del servicio.
Agregaremos a la solución 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).
Después crearemos una página que contendrá un grid con el resultado de nuestro servicio y un botón que será el encargado de ir al servicio y obtener la lista de países:
Después de creada e implementada la página pasaremos a compilar el proyecto para ver si todo esta bien. Posteriormente pondremos el proyecto y la página como elementos de inicio, y ejecutaremos para ver el resultado, lo cual debería ser algo como esto:
Y hasta aquí este ejemplo práctico de como construir y consumir un servicio WCF en ASP.Net. Espero les halla servido como base. Más adelante escribiré otro artículo sobre los distintos comportamientos que podemos definirle a un servicio WCF.
hasta la próxima…
Artículos Relacionados:
- Descargar Solución (VS 2008) WCF Servicio y Cliente ASP.NET C#.
- WCF, Introducción y Conceptos Básicos.
- C#, Nuevas Características.
buenas. muy instructivo el tutorial y estoy muy agradecido por el me esta ayudando a comprender web services. queria preguntarle si cabria la posiblidad que suba el codigo completo para su mayor estudio. de antemano muchas gracias.
ResponderEliminarHola Eli:
ResponderEliminarEn estos momentos estoy de vacaciones fuera de casa, pero te prometo que en pocos días subo el código de ejemplo, o al menos te lo envío por mail.
Un salu2 y gracias por leerme,
Derbis
buen aporte gracias...
ResponderEliminarexcelente!! podrias subir el codigo para, como dijeron, poder estudiarlo con mayor detalle ?
ResponderEliminarmuchas gracias
Hola Miguel:
ResponderEliminarAl final del artículo, he agregado un enlace para descargar la solución del ejemplo de WCF (Descargar Solución (VS 2008) WCF Servicio y Cliente ASP.NET C#). (Ojo: Es una solución para Visual Studio 2008, no se si funcionará correctamente en VS 2010)
Aunque el ejemplo para descarga de WCF no es exactamente el mismo que el explicado en este tutorial sobre WCF, si tiene bastantes puntos de contactos, y es suficiente para que puedas comenzar a utilizar WCF.
Un salu2 y suerte,
Derbis
bien o que parcero
ResponderEliminarparce necesito exponer en mi universidad sobre WCF,segui los pasos de este tutorial, pero se me presentan errores
sera que me puede enviar el codigo
porfavor
al correo cepeda_357@hotmail.com
gracias
Buenos Días Derbis
ResponderEliminarEstoy implementando WebServices en una aplicación de Consulta y quiero implementar seguridad. Vi tu articulo relacionado a WCF y me pareció muy interesante ,
Y tengo la duda de si me conviene cambiar mis WebServices a WCF para que sea más sencillo la seguridad?? O solamente implemento seguridad en los WebServices que estoy desarrollando???
Gracias
Samuel Chavez
Quiero Agradecer este tutorial me funcionó a la perfección.
ResponderEliminarGracias por el tutorial. Me ha servido de mucha ayuda.
ResponderEliminariuiui
ResponderEliminaroye .. una pregunta .. y si es conveniente que una pagina web consuma un servicio wcf en lugar de acceder directamente a la base de datos ,, ??? digo .. esto en caso de que el servicio sea de interraccion con una base de datos
ResponderEliminarSencillo, lo que necesitaba. Gracias!!
ResponderEliminarLástima que no se pueda descargar el ejemplo
ResponderEliminarHola, el ejemplo sí se puede descargar, yo lo acabo de hacer. Salu2
ResponderEliminarMuy buen aporte, gracias.
ResponderEliminarMuy buen ejemplo! Gracias
ResponderEliminarHola, el servidor del código esta fallando... Me gustaría tener el codigo completo.
ResponderEliminarGracias.
Hola, acabo de leer tu tutorial de
ResponderEliminar" WCF, Desarrollando un Servicio y Cliente ASP.Net" mi consulta es es posible combinarlo con mysql?
es decir un web service con mysql
existe algun tutorial que lo necesito hacer y estoy muy atorado...
Hola, Primero que nada esta bien el tutorial me ayudo mucho, sera que puedas volver a poner el enlace para descargar el ejemplo
ResponderEliminarGracias
Saludos
Hola, tu articulo esta muy interesante, podrias poner el detalle de cada metodo, porque al parecer ya no esta disponible para descargar el codigo. gracias
ResponderEliminarHola, por favor envíame el código por correo mi correo es analistdeveloper@gmail.com
ResponderEliminaramigo como podria hacer esto en vb.net
ResponderEliminar?
hola Derbis Corrales, me pasarias el codigo por correo xfa.
ResponderEliminarevans.z.ero@hotmail.com
Hola, muchas gracias por este gran ejemplo me ayudo mucho en lo que estoy trabajando actualmente, muchas gracias por darte tu tiempo de publicar estos ejemplo. Saludos.
ResponderEliminarde igual manera podrías enviarme el código de este ejemplo por favor, y nuevamente gracias: correo: hdez.hdez.antonio@outlook.es
Que tal Podrias mandarme el ejemplo por correo, esta genial la forma en que lo realizaas
ResponderEliminarh_ibarguen@hotmail.com
Gracias saludos
Que tal Podrias mandarme el ejemplo por correo, esta genial la forma en que lo realizaas
ResponderEliminarh_ibarguen@hotmail.com
Gracias saludos
Hola, muchas gracias por el tutorial, podrías mandarme el ejemplo a mi correo, ya que lo intente bajar y no pude... llopezaraujo@gmail.com
ResponderEliminarExcelente explicación muchas gracias.. me aclaró muchas lagunas que tenía...
ResponderEliminar