En el post anterior, vimos como crear un proyecto del tipo WCF, donde exponíamos en la Web, una serie de operaciones definidas por un contrato dentro de un proveedor y un consumidor.
Mi objetivo en este post es ayudarte a consumir este servicio, desde una simple aplicación del tipo consola para que veas lo fácil que es.
Antes de empezar te diré que voy a trabajar sobre la solución anterior, agregando a ésta los proyectos que voy a ir mencionando.
Paso 1. Crear un WCF Service Application
Luego de abrir la solución anterior, con el servicio definido, vamos a adicionar un WCF Service Application.
Esto agregará a la solución una aplicación, con dos clases por defecto, las cuales deberás eliminar. Mira la siguiente figura.
Luego de eliminado los dos archivos, voy a renombrar Service1.svc por MiServicio.svc. De forma que el proyecto quede de la siguiente forma:
Paso 2. Referenciar al WCFServiceLibrary creado
Recuerda que en el post anterior, creamos el servicio en un WCFServiceLibrary, por lo que ahora, en el proyecto que acabamos de agregar en el paso anterior, vamos a referenciarlo. Recuerda que basta con dar clic derecho del mouse sobre el proyecto WCF Service Application y pulsar Add Reference.
En la pantalla que aparece, escogemos el tab de Proyects y seleccionamos el proyecto que contiene nuestro servicio definido.
Paso 3. Apuntando al servicio correcto
Luego de agregada la referencia, vamos a indicarle a nuestro proyecto WCF Service Application que apunte al servicio definido.
Para hacer esto, seleccionaremos MiServicio.svc
y damos clic derecho para ingresar a la opción View Code, o pulsamos simplemente F7, luego de seleccionar el archivo.
Al acceder a esta opción, podremos visualizar el siguiente código:
<%@ ServiceHost Language="C#" Debug="true" Service="WcfService1.Service1" CodeBehind="Service1.svc.cs" %>
Este código hace referencia al Servicio, por lo que debemos de cambiar la sección de Service y eliminar el bloque de CodeBehind, dejando el código de la siguiente forma.
<%@ ServiceHost Language="C#" Debug="true" Service="WCFServiceLibrary.MiServicio"%>
Recuerda que en el paso anterior hicimos referencia al WCF Service Library definido, y es allí donde encontramos el servicio WCFServiceLibrary.MiServicio, por lo que podemos usarlo sin ningún problema.
Luego de realizar los cambios, ejecutemos la aplicación creada para ver si todo esta OK.
Te debe de salir lo siguiente:
Ya que nos aseguramos que el servicio funciona adecuadamente, vamos a crear un proyecto del tipo consola.
Paso 4: Crear un Proyecto del Consola
No voy a explicar mucho en este paso, porque ya hemos creado muchos proyectos consola en el blog. Lo único que aclararé es que debes de adicionar el proyecto a la solución que contiene hasta entonces dos proyectos, uno del tipo WCF Service Library y el WCF Service Application.
Paso 5: Referenciar System.ServiceModel
Al Proyecto consola le vamos a agregar referencia, en primer lugar al Assembly System.ServiceModel. Recuerda que para hacer esto basta con ir a la opción Add Reference, y en la pantalla que aparece, buscar System.ServiceModel en el tab .Net.
Paso 6: Referenciar el Servicio Creado
Bueno, para poder usar el Servicio WCF, debemos de referenciarlo. Para hacer esto debemos de dar clic derecho del mouse sobre el proyecto Consola y seleccionar la opción Add Service Reference. En la pantalla que aparece seleccionamos Discover-> Services in Solution
Aparecerán listados los servicios que tenemos, seleccionaremos el que dice MiServicio.svc. Mira la siguiente imagen.
Aprecia que he cambiado también el Namespace, en la parte inferior.
Luego de seleccionar el servicio y cambiar el Namespace, pulsar OK.
Paso 7: Codificar la invocación a las Operaciones del Servicio
Cambiar el código de Progrma.cs del proyecto Consola por el siguiente:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel; //Referencia al Assembly Referenciado
namespace ConsoleApplicationRunService
{
class Program
{
static void Main(string[] args)
{
//Definición del Cliente al Servicio referenciado
MiServicioReference.MiServicioClient cliente = new
MiServicioReference.MiServicioClient();
//Invocación a la Operación Factorial
Console.WriteLine("El Factorial de 5 es : {0}",cliente.Factorial(5));
Console.WriteLine("Los 10 Primeros numeros Fibonacci son : ");
//Invocación a la Operación Numeros_Fibonacci
foreach (int i in cliente.Numeros_Fibonacci(10))
Console.WriteLine("{0}", i);
//Invocación a la Operación Sumatoria_Fibonacci
Console.WriteLine("La suma de los 10 primero numeros fibonacci es : {0}",
cliente.Sumatoria_Fibonacci(10));
Console.ReadLine();
}
}
}
Ejecuta la aplicación y puedes apreciar que se invoca al servicio WCF creado, mostrando en pantalla el resultado de la invocación a éstos.
Artículos similares
Autor: Victor Parasi
Siempre es difícil escribir sobre uno mismo, qué contar, o por donde empezar, suele ser todo un dilema al momento de presentarse. Aquí vamos. Les diré que soy peruano, Ingeniero por vocación, dedicado a la docencia y siempre en la búsqueda de programar cada vez mejor. Aunque a veces algo terco, sé que no todo en la vida es blanco o negro. Existe el Open Source, y lo respeto pero me llevo mejor con el .Net. Si me hablas de preferencias, te digo que C#, C++, una buena película, colores oscuros, escribir, leer e investigar. Para terminar les diré que amo muchísimo a una mujer espectacular y que es la dueña de mi corazón.

Hola queria consultarte, ya que estoy implementando paso a paso este ejemplo y tengo un error en el Paso 6: Referenciar el Servicio Creado.. me dice que hubo un error al intentar buscar servicios en http://localhost:2248/MiServicio.svc y en detalles aparece todo un codigo html con el error..
Incluso en el paso 3 ,la pantalla que muestras que tiene que aparecer no me sale asi…solo un directorio de los archivos de la aplicacion… Por favor si sabes uqe puede ser te ruego me ayudes…Saludos! y muy buenos tus posts!!
Hola,
Puede ser en tipo de “binding” que usas.. fíjate en el web.config que valores tiene para binding.
Te dejo parte de un web.config para que te orientes
Amigo, excelente todo entendido correctamente, te felicito por la paciencia de la explicación.
Este link lo obtuve gracias a un colega de trabajo llamado: Alfredo Delgadillo.
Hola un muy buen excelente articulo para empezar a entrar al universo de WCF, lo he seguido paso a paso y me ha funcionado a la perfeccion.
Ahora voy a implementar usando las mismas tecnicas añadiendo sobre ellas ejemplos similares que vi con JSON.
Muchas gracias. Victor Parasi.
Gracias por los comentarios.
Y, si no es mucha molestia, sigue haciéndonos publicidad y pasa el link a todos aquellos a los que les puede ser de utilidad.