Compartir a través de


Contratos múltiples

En el ejemplo MultipleContracts se muestra cómo implementar más de un contrato en un servicio y cómo configurar puntos de conexión para comunicarse con cada uno de los contratos implementados. Este ejemplo se basa en la introducción. El servicio se ha modificado para definir dos contratos, el ICalculator contrato y el ICalculatorSession contrato.

Nota:

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

La clase de servicio implementa tanto el contrato ICalculator como el ICalculatorSession. Dado que uno de los contratos requiere una sesión, el servicio usa el PerSession modo de instancia para mantener el estado durante la duración de la sesión.

La configuración del servicio se ha modificado para definir dos puntos de conexión para exponer cada contrato. El extremo ICalculator se expone en la dirección base utilizando basicHttpBinding. El extremo ICalculatorSession se expone en la dirección base/sesión utilizando wsHttpBinding con el atributo bindingConfiguration establecido en BindingWithSession, tal y como se muestra en la configuración de ejemplo siguiente.

<service
    name="Microsoft.ServiceModel.Samples.CalculatorService"
    behaviorConfiguration="CalculatorServiceBehavior">
  <!-- ICalculator endpoint is exposed using BasicBinding at the base
       address provided by host:
       http://localhost/servicemodelsamples/service.svc  -->
  <endpoint address=""
            binding="basicHttpBinding"
            contract="Microsoft.ServiceModel.Samples.ICalculator" />
  <!-- ICalculatorSession endpoint is exposed using BindingWithSession
       at {baseaddress}/session:
       http://localhost/servicemodelsamples/service.svc/session -->
  <endpoint address="session"
            binding="wsHttpBinding"
            bindingConfiguration="BindingWithSession"
           contract="Microsoft.ServiceModel.Samples.ICalculatorSession" />
  ...
</service>

El código de cliente generado ahora incluye una clase de cliente para el contrato original ICalculator y el nuevo ICalculatorSession contrato. La configuración del cliente y el código se han modificado para comunicarse con cada contrato en el punto de servicio adecuado.

El cliente es una aplicación windows de consola (.exe). El servicio se hospeda en Internet Information Services (IIS).

La ventana de la consola de cliente muestra las operaciones enviadas a cada uno de los puntos de conexión, primero el punto de conexión básico, seguido del punto de conexión seguro.

Para configurar, compilar y ejecutar el ejemplo

  1. Asegúrese de que ha realizado el procedimiento de instalación única para los ejemplos de Windows Communication Foundation.

  2. Para compilar el código C# o Visual Basic .NET Edition de la solución, siga las instrucciones de Building the Windows Communication Foundation Samples.

  3. Para ejecutar el ejemplo en una configuración de una máquina única o entre máquinas, siga las instrucciones de Ejecución de los ejemplos de Windows Communication Foundation.