Sdílet prostřednictvím


Adresování

Ukázka adresování ukazuje různé aspekty a funkce adres koncových bodů. Ukázka je založená na začínáme. V této ukázce je služba hostovaná samostatně. Služba i klient jsou konzolové aplikace. Služba definuje více koncových bodů pomocí kombinace relativních a absolutních adres koncových bodů.

Poznámka:

Postup nastavení a pokyny k sestavení pro tuto ukázku najdete na konci tohoto tématu.

Konfigurační soubor služby určuje základní adresu a čtyři koncové body. Základní adresa je určena pomocí elementu add v části service/host/baseAddresses, jak je znázorněno v následující ukázkové konfiguraci.

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

První definice koncového bodu zobrazená v následující ukázkové konfiguraci určuje relativní adresu, což znamená, že adresa koncového bodu je kombinací základní adresy a relativní adresy podle pravidel složení identifikátoru URI.

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

V tomto případě je relativní adresa prázdná (""), takže adresa koncového bodu je stejná jako základní adresa. Skutečná adresa koncového bodu je http://localhost:8000/servicemodelsamples/service.

Druhá definice koncového bodu také určuje relativní adresu, jak je znázorněno v následující ukázkové konfiguraci.

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

Relativní adresa "test" je připojena k základní adrese. Skutečná adresa koncového bodu je http://localhost:8000/servicemodelsamples/service/test.

Třetí definice koncového bodu určuje absolutní adresu, jak je znázorněno v následující ukázkové konfiguraci.

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

Základní adresa v adrese nemá žádnou roli. Skutečná adresa koncového bodu je http://localhost:8001/hello/servicemodelsamples.

Čtvrtá adresa koncového bodu určuje absolutní adresu a jiný přenos – TCP. Základní adresa v adrese nemá žádnou roli. Skutečná adresa koncového bodu je 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" />

Klient přistupuje pouze k jednomu ze čtyř koncových bodů služby, ale všechny čtyři jsou definovány v konfiguračním souboru. Klient vybere koncový bod při vytváření objektu CalculatorProxy . Změnou názvu konfigurace můžete CalculatorEndpoint1CalculatorEndpoint4provádět jednotlivé koncové body.

Při spuštění ukázky služba vyčíslí adresu, název vazby a název kontraktu pro každý z jeho koncových bodů. Koncový bod výměny metadat (MEX) je jen další koncový bod z pohledu ServiceHost, takže se zobrazí v seznamu.

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

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

Při spuštění klienta se požadavky na operace a odpovědi zobrazí v oknech služby i konzoly klienta. Stisknutím klávesy ENTER v každém okně konzoly vypnete službu a klienta.

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.

Nastavení, sestavení a spuštění ukázky

  1. Ujistěte se, že jste pro ukázky windows Communication Foundation provedli jednorázovou instalační proceduru.

  2. Pokud chcete sestavit edici C# nebo Visual Basic .NET řešení, postupujte podle pokynů v části Sestavení ukázek windows Communication Foundation.

  3. Pokud chcete spustit ukázku v konfiguraci s jedním nebo více počítači, postupujte podle pokynů v části Spuštění ukázek windows Communication Foundation.

    Poznámka:

    Pokud použijete Svcutil.exe k opětovnému vygenerování konfigurace pro tuto ukázku, nezapomeňte upravit název koncového bodu v konfiguraci klienta tak, aby odpovídal kódu klienta.