Tutorial WCF Cuarta Parte: Creando un cliente para consumir nuestro Servicio WCF (Windows Communication Foundation)

Bienvenidos a esta cuarta parte del Tutorial de WCF. Como recordarán en la tercera parte de este tutorial, habíamos visto como alojar nuestro servicio WCF, ahora que nuestro servicio esta creado y alojado necesitaremos un cliente que consuma nuestro servicio. Crearemos una aplicación cliente que consuma dicho servicio HolaServicioWCF.

Crearemos una aplicación de consola windows para llamar al servicio WCF

Creando el proyecto de la aplicación cliente.

Primero de todo, necesitamos crear una aplicación de consola y agregarla a la solución. Deberemos seguir los siguientes pasos para crear la aplicación de consola.

  1. En el Explorador de soluciones, debemos hacer click derecho en la solución ‘MiPrimerServicioWCF‘ y seleccionar Add -> New Project... desde el menu contextual. La ventana de diálogo de “Add New Project” debería aparecer, como muestra la siguiente captura de pantalla.

WCFTUT_21

2. Seleccionar el template Visual C# | Console App (.NET Framework), cambiar el nombre del proyecto a HolaServicioWCF y dejar la opción Location con la ruta seleccionada de la solución. Hacemos click en el botón Ok y el nuevo proyecto es creado y agregado a nuestra solución.

Generando el proxy y los archivos de configuración

Para consumir un servicio WCF SOAP, el cliente que acabamos de crear debe primero obtener o generar una clase proxy.

También necesitamos un archivo de configuración para especificar cosas como el binding del servicio, la dirección del servicio y el contracto.

Para generar estos dos archivos, usaremos una herramienta SvcUtil.exe en la línea de comandos. Debemos seguir estos pasos para generar los dos archivos.

  1. Ejecutar el servicio presionando Ctrl + F5 o seleccionar la opción del menu DEBUG | Star Without Debugging (en este punto su proyecto de arranque (startup project) debería ser HostServer, sino es así debe configurarlo como proyecto de arranque.)
  2. Luego de que el servicio ha sido ejecutado, debemos abrir una ventana de línea de comando, cambiarnos al directorio donde se encuentra nuestra aplicación cliente (C:\ProyectoWCF\Proyectos\MiPrimerServicioWCF\HolaServicioWCF), y luego correr la herramienta SvcUtil.exe en la línea de comandos con la siguiente sintaxis (podría ser un directorio diferente en su maquina si ha elegido otro para hacer este tutorial y puerto y deberá sustituirlo con el directorio y puerto  correspondiente.)

“C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools\SvcUtil.exe” http://localhost:57514/HostServer/PrimerServicioWCF.svc?wsdl /out:PrimerServicioWCFRef.cs /config:app.config:

WCFTUT_22

Hasta aqui dos archivo han sido generados, uno para el proxy (PrimerServicioWCFRef.cs) y el otro para la configuración (app.config).

Si abrimos el archivo del proxy, veremos que la interfaz del servicio es reproducida ahi dentro. Dentro de esta clase, la implementación de la operación del servicio (ObtenerMensaje) es solo un contenedor que delega la llamada a la implementación del servicio real de la operación.

Dentro del archivo de configuración, veremos las definiciones de PrimerServicioWCF como por ejemplo el endpoint  address, binding, timeout, security and behaviors del servicio.

Personalizando la aplicación cliente

Antes de correr la aplicación cliente, debemos hacer algún trabajito extra. Estos son los siguientes pasos que debemos seguir:

  1. Cuando vayamos a Visual Studio 2017 (es la versión que estoy utilizando en este tutorial, pero pasará lo mismo con cualquier otra versión de Visual Studio) nos abrirá una ventana de diálogo para recargar el archivo app.config,  porque este ha sido cambiado. Debemos hacer click en el botón Yes para recargarlo.
  2. Agregar el archivo del proxy al proyecto. En la solución del proyecto, primero seleccionamos el proyecto HolaServicioWCF y luego hacer click en Show All Files para mostrar todos los archivos. Ahora bajo la carpeta HolaServicioWCF veremos el archivo del proxy(PrimerServicioWCFRef.cs), sin embargo este archivo aun no esta incluido en el proyecto. Debemos hacer click derecho sobre el y seleccionar la opción Include in Project para incluirlo en el proyecto del cliente.  Podemos también usar la opción del menu Project | Add Existing Item… (o en el menú contextual Add | Existing Item…) para agregarlo al proyecto.
  3. Agregar una referencia al namespace System,ServiceModel. Desde el explorador de soluciones, debemos hacer click derecho en el proyecto HolaServicioWCF, seleccionar Add | Reference…, y marcar System.ServiceModel  bajo Assemblies | Framework. Luego, debemos hacer click en el botón OK para agregar la referencia a el proyecto.
  4. Modificar el archivo program.cs para llamar al servicio. En program.cs agregamos la siguiente línea para inicializar el objeto cliente del servicio.

    var client = new PrimerServicioWCFClient();

           Luego, podemos llamar al método ObtenerMensaje de nuestro objeto recién creado.

   Console.WriteLine(client.ObtenerMensaje(“Hola WCF”));

Corriendo la aplicación cliente

Ahora estamos preparados para correr la aplicación cliente.

Primero, debemos asegurarnos que la aplicación que hace de host, HostServer, ha sido ejecutada, Si anteriormente la hubiésemos parado, ejecútela ahora (necesitamos configurar HostServer como proyecto de arranque (Startup project) y presionar las teclas Ctrl + F5 para ejecutarla en el modo de no depuración, o podemos solo hacer click derecho en el proyecto HostServer y seleccionar View in Browser (Microsoft Edge) desde el menu contextual.

Luego, desde el explorador de soluciones, debemos hacer click derecho  en el proyecto HolaServicioWCF, seleccionar Set as Startup Project, y luego presionar Ctrl + F5 para correrlo.

Veremos las siguiente salida, como muestra la  imagen:

WCFTUT_23

Configuración de la aplicación de servicio para inicio automático

Como sabemos debemos ejecutar la aplicación que aloja nuestro servicio antes de correr el programa cliente. Para esto debemos hacer algunos cambios en la solución para poder automatizar esta tarea, esto es, para automatizar la corrida del servicio antes que corra la aplicación cliente.

Para hacer esto, en el Explorador de la solución, debemos hacer click derecho sobre nuestra solución y seleccionar la opción Properties desde el menu contextual, y luego veremos la ventana de diálogo de propiedades de la solución:

 

WCFTUT_24

En este formulario, primero debemos seleccionar la opción Multiple startup projects, Luego cambiar la acción de HostServer a Start without debugging. Cambiar HolaServicioWCF a la acción Start.

Importatnte: La aplicación HostServer debe estar arriba del proyecto HolaServicioWCF . Si no es así, usamos las flechas que se encuentran a la derecha para moverlo hacia arriba,

Para poder probar esta configuración, primero pararemos el servicio si lo estamos corriendo, y presionamos Ctrl + F5. Notaremos que HostServer es ejecutado primero, y luego la aplicación cliente es la que corre. Bueno hasta aquí este post de como crear una aplicación cliente que consuma un servicio WCF. Seguiremos en el siguiente post, con nuevas formas de alojar nuestros servicios WCF. Si desea dejar alguna consulta o comentario, puede dejarlo aquí debajo del post. Hasta la próxima !!

Código: Primer Servicio con WCF

Tutorial WCF Primera Parte: Conceptos básicos de WCF

Tutorial WCF Segunda Parte: Creando un servicio con WCF

Tutorial WCF Tercera Parte: Alojando (Hosting) 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.

6 thoughts on “Tutorial WCF Cuarta Parte: Creando un cliente para consumir nuestro Servicio WCF (Windows Communication Foundation)

  1. Hola me pareció un muy buen tutorial porque lo explicas desde cero y no usando luego luego VB y no entender lo que se esta haciendo, lo único que me salio mal es este tutorial, cuando pongo todo lo de la consola (cambiando puertos y rutas) no me aparecen estos archivos en VB en la carpeta si existen, pero VB no los lee, ya lo cerré y abrí y nada, si me pudieras ayudar ahí por fa, le pedí ayuda a unos colegas y luego luego se fueron a la solución de interfaz, pero yo quiero terminar este tutorial, gracias.

    1. Hola Betovn007,

      Primero de todo, te agradecemos mucho tus comentarios. Con respecto al error que me cuentas, no entiendo bien si el error que estas teniendo es con la aplicación cliente que consume el servicio o no. Si me puedes explicar un poquito más cual es el error que te esta sucediendo para poder ayudarte. Mientras tanto te comento que en esta cuarta parte del tutorial esta el link para poder bajarte el código de Git para que lo puedas explorar y comparar si deseas.

      Saludos

Deja un comentario

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