Direccionamiento

Download sample

El ejemplo de direccionamiento muestra varios aspectos y características de direcciones del extremo. El ejemplo se basa en el Ejemplo de introducción. En este ejemplo, el servicio es hospedado por sí mismo. El cliente y el servicio son aplicaciones de consola. El servicio define varios extremos mediante una combinación de direcciones del extremo absolutas y relativas.

Nota

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

El archivo de configuración de servicio especifica una dirección base y cuatro extremos. La dirección base se especifica utilizando el elemento agregar, bajo el servicio/host/baseAddresses como se muestra en la configuración del ejemplo siguiente.

<service 
    name="Microsoft.ServiceModel.Samples.CalculatorService"
    behaviorConfiguration="CalculatorServiceBehavior">
  <host>
    <baseAddresses>
      <add baseAddress="https://localhost:8000/ServiceModelSamples/service"/>
    </baseAddresses>
  </host>
  ...
</service>

La primera definición de extremo mostrada en el siguiente ejemplo de configuración especifica una dirección relativa, lo cual significa que la dirección del extremo es una combinación de la dirección base y la dirección relativa siguiendo las reglas de composición de identificadores uniformes de recursos (URI).

<!-- Empty relative address specified: 
     use the base address provided by the host. -->
<!-- The endpoint address is     https://localhost:8000/ServiceModelSamples/service. -->
<endpoint address=""
          binding="wsHttpBinding"
          contract="Microsoft.ServiceModel.Samples.ICalculator" />

En este caso, la dirección relativa está vacía (""), por lo que la dirección del extremo es igual a la dirección base. La dirección del extremo real es https://localhost:8000/servicemodelsamples/service.

La segunda definición de extremo también especifica una dirección relativa, como se muestra en el siguiente ejemplo de configuración.

<!-- The relative address specified: use the base address -->
<!-- provided by the host + path. The endpoint address is -->
<!-- https://localhost:8000/servicemodelsamples/service/test. -->
<endpoint address="/test"
          binding="wsHttpBinding"
          contract="Microsoft.ServiceModel.Samples.ICalculator" />

La dirección relativa, "test", se anexa a la dirección base. La dirección del extremo real es https://localhost:8000/servicemodelsamples/service/test.

La tercera definición de extremo especifica una dirección absoluta, como se muestra en el siguiente ejemplo de configuración.

<endpoint address="https://localhost:8001/hello/servicemodelsamples"
          binding="wsHttpBinding"
          contract="Microsoft.ServiceModel.Samples.ICalculator" />

La dirección base no juega ningún papel en la dirección. La dirección del extremo real es https://localhost:8001/hello/servicemodelsamples.

La cuarta dirección del extremo especifica una dirección absoluta y un TCP de transporte diferente. La dirección base no juega ningún papel en la dirección. La dirección del extremo real es net.tcp://localhost:9000/servicemodelsamples/service.

<!-- The absolute address specified, different transport: -->
<!-- use the specified address, and ignore the base address. -->
<!-- The endpoint address is -->
<!-- net.tcp://localhost:9000/servicemodelsamples/service. -->
<endpoint address=
          "net.tcp://localhost:9000/servicemodelsamples/service"
          binding="netTcpBinding"
          contract="Microsoft.ServiceModel.Samples.ICalculator" />
</service>

El cliente tiene acceso sólo a uno de los cuatro extremos de servicio, pero los cuatro se definen en su archivo de configuración. El cliente selecciona un extremo cuando crea el objeto CalculatorProxy. Cambiando el nombre de configuración de CalculatorEndpoint1 a través de CalculatorEndpoint4, puede ejercer cada uno de los extremos.

Al ejecutar el ejemplo, el servicio enumera la dirección, enlazando el nombre y el nombre del contrato para cada uno de sus extremos. El extremo de intercambio (MEX) de metadatos simplemente es otro extremo de la perspectiva del ServiceHost que se presenta en la lista.

Service endpoints:
Endpoint - address:  https://localhost:8000/ServiceModelSamples/service
           binding:  WSHttpBinding
           contract: ICalculator
Endpoint - address:  https://localhost:8000/ServiceModelSamples/service/test
           binding:  WSHttpBinding
           contract: ICalculator
Endpoint - address:  https://localhost:8001/hello/servicemodelsamples
           binding:  WSHttpBinding
           contract: ICalculator
Endpoint - address:  net.tcp://localhost:9000/servicemodelsamples/service
           binding:  NetTcpBinding
           contract: ICalculator
Endpoint - address:  https://localhost:8000/ServiceModelSamples/service/mex
           binding:  MetadataExchangeHttpBinding
           contract: IMetadataExchange

The service is ready.
Press <ENTER> to terminate service. 

Al ejecutar el cliente, las solicitudes de la operación y las respuestas se muestran en las ventanas de la consola del cliente y del servicio. Presione Entrar en cada ventana de la consola para cerrar el servicio y el 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 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.

  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.

    Nota

    Si usa Svcutil.exe para volver a generar la configuración de este ejemplo, asegúrese de que modifica el nombre de extremo en la configuración del cliente para que coincida con el código de cliente.

Footer image

Copyright © 2007 Microsoft Corporation. Reservados todos los derechos.