WCF el Cliente

Una vez construido nuestro servicio y hecho el hosting del mismo, ahora nos queda realizar el cliente, es decir, como consumir ese servicio.

Para ello crearemos un aplicación de consola y el primer paso es añadir la serferencia del ensamblado System.ServiceModel. Si recordamos como funcionabamos con los servicios Web debiamos añadir la referencia para poder interactuar con el servicio Web que nos generaba el mapeo, clases… para poder utilizarlo en nuestra aplicación, ahora necesitamos dos archivos el proxy y el archivo de configuracion. Para ello utilizaremos la herramienta svcutil, es una herramienta de liena de comandos y para ejecutarla como todas las herramientas de linea de comandos de levantaremos la consola de comandos de Visual Studio 2005 y ejecutaremos el siguiente comando:

svcutil.exe http://localhost:8000/Derivatives/ 

Este comando nos genera dos archivos client.cs y output.config. Estos dos archivos los añadimos al proyecto de consola, renombrando el fichero output como app.config.

Con estos dos ficheros tenemos el ABC del cliente y ahora es tan sencillo como haciamos con los servicios Web.

 

 public static void Main(string[] args)
        {
            Console.WriteLine("Press any key when the service is ready.");
            Console.ReadKey();

            decimal result = 0;
            using (DerivativesCalculatorClient proxy =
                new DerivativesCalculatorClient("WSHttpBinding_IDerivativesCalculator"))
            {
                result = proxy.CalculateDerivative(
                    new string[] { "MSFT" },
                    new decimal[] { 3 },
                    new string[] { });
                proxy.Close();
            }
            Console.WriteLine(string.Format("Result: {0}", result));

            Console.WriteLine("Press any key to exit.");
            Console.ReadKey();

        }

Como podemos ver en el codigo, creamos un proxy a partir de la clase cliente que nos ha generado, y a partir de ahi se puede llamar a los metodos que ha expuesto nuestro servcio.

Pero la pregunta que nos tendriamos que hacer es como el cliente sabe a que dirección debe acceder y el protocolo a utilizar. Bueno, esto es sencillo, si recordamos que nos generaba la herramienta dos ficheros, uno de ellos era un fichero config (como todo en WCF), en el que esta toda la información que nos preguntabamos, de manera que nos permite reconfigurar el cliente, sin necesidad de programar una sola línea de código más.

El fichero de condifuración que nos ha generado contendria:

<configuration>
    <system.serviceModel>
        <bindings>
            <wsHttpBinding>
                <binding name="WSHttpBinding_IDerivativesCalculator" closeTimeout="00:01:00"
                    openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
                    bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
                    maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
                    messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true"
                    allowCookies="false">
                    <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                        maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                    <reliableSession ordered="true" inactivityTimeout="00:10:00"
                        enabled="false" />
                    <security mode="Message">
                        <transport clientCredentialType="Windows" proxyCredentialType="None"
                            realm="" />
                        <message clientCredentialType="Windows" negotiateServiceCredential="true"
                            algorithmSuite="Default" establishSecurityContext="true" />
                    </security>
                </binding>
            </wsHttpBinding>
        </bindings>
        <client>
            <endpoint address="http://localhost:8000/Derivatives/Calculator"
                binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IDerivativesCalculator"
                contract="IDerivativesCalculator" name="WSHttpBinding_IDerivativesCalculator">
                <identity>
                    <userPrincipalName value="WIN2K3STD221105Administrator" />
                </identity>
            </endpoint>
        </client>
    </system.serviceModel>
</configuration>

El codigo de la solución se encuentra disponible aqui

Ya hemos generado todo el camino completo de un WCF, en los siguientes post vamos a ir ampliando WCF

 

Technorati tags:

3 comentarios sobre “WCF el Cliente”

  1. Agradecido por tu aporte¡¡, me deja mucho mas claro para poder comenzar a meter las manos en las masas¡¡¡

    Gracias, y saludos
    Jose Luis Arellano
    Chile.
    PD: Si tuvieras material en españos sobre WCF, WWF, WPF y LINkQ te lo agradeceria.

  2. Buenas, tengo un problema. Tengo instalado en vs professional y no encuentro por ningun lado el archivo Svcutil.exe … a que se debe

    Saludos…
    P:D: Puedo instaarlo por separado

Responder a anonymous Cancelar respuesta

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