Compartir a través de


Generador de canales

Download sample

Este ejemplo muestra cómo una aplicación cliente puede crear un canal con la clase ChannelFactory en lugar de un cliente generado. Este ejemplo se basa en Ejemplo de introducción, que implementa un servicio de calculadora.

Nota

El procedimiento de instalación y las instrucciones de compilación de este ejemplo se encuentran al final de este tema.

Este ejemplo utiliza la clase ChannelFactory para crear un canal a un extremo de servicio. Normalmente, para crear un canal a un extremo de servicio genera un tipo de cliente con Service Model Metadata Utility Tool (Svcutil.exe) y crea una instancia del tipo generado. También puede crear un canal utilizando la clase ChannelFactory, tal y como se muestra en este ejemplo. El servicio creado por el código de ejemplo siguiente es idéntico al servicio en Ejemplo de introducción.

EndpointAddress address = new EndpointAddress("https://localhost/servicemodelsamples/service.svc");
WSHttpBinding binding = new WSHttpBinding();
ChannelFactory<ICalculator> factory = new 
                    ChannelFactory<ICalculator>(binding, address);
ICalculator channel = factory.CreateChannel();

Nota

Si está ejecutando este ejemplo en un escenario con varios equipos, debe reemplazar el "host local" en el código anterior con el nombre completo del equipo que está ejecutando el servicio. Este ejemplo no utiliza la configuración para establecer la dirección del extremo, por lo que se debe hacer en el código.

Una vez creado el canal, se pueden invocar operaciones de servicio de la misma manera que con un cliente generado.

// Call the Add service operation.
double value1 = 100.00D;
double value2 = 15.99D;
double result = channel.Add(value1, value2);
Console.WriteLine("Add({0},{1}) = {2}", value1, value2, result);

Para cerrar el canal, se debe convertir primero a una interfaz IClientChannel. Esto es porque cuando se genera el canal se declara en la aplicación cliente utilizando la interfaz ICalculator, que cuenta con métodos como Add y Subtract pero no Close. El método Close se origina en la interfaz ICommunicationObject.

// Close the channel.
 ((IClientChannel)client).Close();

Al ejecutar el ejemplo, las solicitudes y respuestas de la operación se muestran en la ventana de la consola del cliente. Presione ENTRAR en la ventana de cliente para cerrar la aplicación del cliente.

Add(100,15.99) = 115.99
Subtract(145,76.54) = 68.46
Multiply(9,81.25) = 731.25
Divide(22,7) = 3.14285714285714

Press <ENTER> to terminate client.

Para configurar, generar y ejecutar el ejemplo

  1. Asegúrese de que ha realizado el Procedimiento de instalación único para ejemplos de Windows Communication Foundation.

  2. Para generar el código C# o Visual Basic .NET Edition de la solución, siga las instrucciones de Generación de ejemplos de Windows Communication Foundation. Observe que este ejemplo no permite la publicación de metadatos. Debe habilitarla primero para este ejemplo con objeto de regenerar el tipo de cliente.

  3. Para ejecutar el ejemplo en una configuración de equipos única o cruzada, siga las instrucciones de Ejecución de ejemplos de Windows Communication Foundation.

Para ejecutar el ejemplo en varios equipos

  • Reemplace el "host local" en el código siguiente con el nombre completo del equipo que está ejecutando el servicio.

    EndpointAddress address = new EndpointAddress("https://localhost/servicemodelsamples/service.svc");
    

Footer image

Copyright © 2007 Microsoft Corporation. Reservados todos los derechos.