WCF: consumir el servicio WCF

Los servicios WCF permiten que otras aplicaciones accedan a ellos o los consuman. Un servicio WCF se puede consumir de muchas formas según el tipo de hospedaje. Aquí, explicamos el método paso a paso para consumir un servicio WCF para cada una de las siguientes opciones de hospedaje populares:

  • Consumir el servicio WCF alojado en IIS 5/6
  • Consumir el servicio WCF autohospedado
  • Consumir el servicio WCF alojado en el servicio de activación de Windows
  • Consumir el servicio WCF alojado en el servicio de Windows

Consumir el servicio WCF alojado en IIS 5/6

El proceso de consumo de un servicio WCF alojado en IIS 5/6 se analiza en detalle a continuación. Además, la discusión incluye cómo crear aplicaciones de consola y proxy.

Step 1- Una vez que un servicio está alojado en IIS, tenemos que consumirlo en las aplicaciones cliente. Antes de crear la aplicación cliente, necesitamos crear un proxy para el servicio. Este proxy lo utiliza la aplicación cliente para interactuar con el servicio. Para crear un proxy, ejecute el símbolo del sistema de Visual Studio 2008. Usando la utilidad de servicio, podemos crear la clase de proxy y su información de configuración.

svcutilhttp: //localhost/IISHostedService/Service.svc

Después de ejecutar este comando, obtendremos dos archivos generados en la ubicación predeterminada.

  • MyService.cs - Clase de proxy para el servicio WCF

  • output.config - Información de configuración del servicio

Step 2 - Ahora, comenzaremos a crear la aplicación de consola usando Visual Studio 2008 (aplicación cliente).

Step 3- Agregue la referencia 'System.ServiceModel'; este es el dll principal de WCF.

Step 4 - Crea una clase Proxy.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace MyServiceClient {
   Class Program {
      Static void Main(string[] args) {
         // Creating Proxy for the MyService
         ServiceClient Client = newServiceClient();
         Console.WriteLine("Client calling the service...");
         Console.WriteLine("Hello Ram");
         Console.Read();
      }
   }
}

La salida aparece de la siguiente manera:

Consumir el servicio WCF autohospedado

Aquí, todo el proceso de consumir un servicio WCF autohospedado se explica paso a paso junto con una amplia codificación y capturas de pantalla cuando sea necesario.

Step 1- El servicio está alojado, ahora necesitamos implementar la clase de proxy para el cliente. Hay diferentes formas de crear el proxy.

  • Usando SvcUtil.exe, podemos crear la clase de proxy y su archivo de configuración con puntos finales.

  • Añadiendo referencia de servicio a la aplicación cliente.

  • Implementación de la clase ClientBase <T>

De estos tres métodos, Implementar ClientBase <T> es la mejor práctica. Si está utilizando los otros dos métodos, debemos crear una clase de proxy cada vez que hagamos cambios en la implementación del Servicio. Pero este no es el caso de ClientBase <T>. Creará el proxy solo en tiempo de ejecución y, por lo tanto, se encargará de todo.

Para ello, cree una clase de proxy, que incluye las referencias de System.ServiceModel y MyCalculatorService.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;
using MyCalculatorService;

namespace MyCalculatorServiceProxy {
   // WCF create proxy for ISimpleCalculator using ClientBase
   Public class MyCalculatorServiceProxy : 
   ClientBase<ISimpleCalculator>,
   
   ISimpleCalculator {
      Public int Add(int num1, int num2) {
         //Call base to do funtion
         returnbase.Channel.Add(num1, num2);
      }
   }
}

Ahora, cree una aplicación de consola, que incluye las referencias de System.ServiceModel y MyCalculatorServiceProxy.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;
using MyCalculatorServiceProxy;

namespace MyCalculatorServiceClient {
   classProgram {
      Static void Main(string[] args) {
         MyCalculatorServiceProxy.MyCalculatorServiceProxy proxy = newMyCalculatorServiceProxy.MyCalculatorServiceProxy();
         
         Console.WriteLine("Client is running at " + DateTime.Now.ToString());
         Console.WriteLine("Sum of two numbers. 5 + 5 =" + proxy.Add(5,5));
         Console.ReadLine();
      }
   }
}

Step 2 - La información de punto final (igual que el servicio) debe agregarse al archivo de configuración de la aplicación cliente.

<?xmlversion = "1.0"encoding = "utf-8" ?>
<configuration>
   <system.serviceModel>
      <client>
         <endpoint address 
            ="http://localhost:8090/MyCalculatorServiceProxy/ISimpleCalculator"
            binding = "wsHttpBinding" contract "MyCalculatorServiceProxy.ISimpleCalculator">
            </endpoint>
      </client>
   </system.serviceModel>
</configuration>

Step 3- Antes de ejecutar la aplicación cliente, debe ejecutar el servicio. A continuación se muestra el resultado de la aplicación cliente.

Consumir el servicio WCF alojado en WAS

Consumir un servicio WCF alojado en WAS es un proceso simple que implica solo unos pocos pasos. Los pasos son los siguientes:

  • Agregue la clase de proxy y el archivo de configuración a la aplicación cliente.
  • Cree el objeto para MathServiceClient y llame al método.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespaceWASHostedClient {
   classProgram {
      staticvoid Main(string[] args) {
         MathServiceClient client = newMathServiceClient();
         Console.WriteLine("Sum of two number 5,6");
         Console.WriteLine(client.Add(5, 6));
         Console.ReadLine();
      }
   }
}

La salida aparece como se muestra a continuación.

Consumir el servicio WCF alojado en el servicio de Windows

El proceso paso a paso de cómo consumir un servicio WCF alojado en el Servicio de Windows se expresa a continuación en detalle con codificación e instrucciones.

Una vez alojado correctamente, podemos crear una clase de proxy para el servicio y empezar a usarlo en la aplicación cliente. Aquí, se muestra con el tipo de alojamiento IIS consumiendo.

Agregue la referencia de ServiceModel.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespaceWindowServiceClient {
   classProgram {
      staticvoid Main(string[] args) {
         //Creating Proxy for the MyService
         MyServiceClient client = newMyServiceClient();
         Console.WriteLine("Client calling the service...");
         Console.WriteLine("Sum of two numbers 5,6");
         Console.WriteLine(client.Add(5, 6));
        
         Console.WriteLine("Subtraction of two numbers 6,5");
         Console.WriteLine(client.Sub(6, 5));
        
         Console.WriteLine("Multiplication of two numbers 6,5");
         Console.WriteLine(client.Mul(6, 5));
        
         Console.WriteLine("Division of two numbers 6,3");
         Console.WriteLine(client.Div(6, 3));
         Console.Read();
      }
   }
}

La salida aparece de la siguiente manera: