Megosztás:


Címzés

A címzési minta a végpontcímek különböző aspektusait és funkcióit mutatja be. A minta az első lépéseken alapul. Ebben a mintában a szolgáltatás saját üzemeltetésű. A szolgáltatás és az ügyfél egyaránt konzolalkalmazás. A szolgáltatás több végpontot határoz meg relatív és abszolút végpontcímek kombinációjával.

Megjegyzés:

A minta telepítési eljárása és összeállítási utasításai a témakör végén találhatók.

A szolgáltatáskonfigurációs fájl egy alapcímet és négy végpontot határoz meg. Az alapcím a hozzáadási elem használatával van megadva, a service/host/baseAddresses területen, az alábbi mintakonfigurációban bemutatott módon.

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

A következő mintakonfigurációban látható első végpontdefiníció egy relatív címet határoz meg, ami azt jelenti, hogy a végpontcím az alapcím és a relatív cím kombinációja az URI-összetétel szabályainak megfelelően.

<!-- 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" />

Ebben az esetben a relatív cím üres (""), így a végpont címe megegyezik az alapcímmel. A tényleges végpontcím a következő http://localhost:8000/servicemodelsamples/service: .

A második végpontdefiníció egy relatív címet is megad, ahogyan az a következő mintakonfigurációban is látható.

<!-- 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" />

A relatív cím ,,teszt", hozzá van fűzve az alapcímhez. A tényleges végpontcím a következő http://localhost:8000/servicemodelsamples/service/test: .

A harmadik végpontdefiníció egy abszolút címet határoz meg, ahogyan az az alábbi mintakonfigurációban is látható.

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

Az alapcím nem játszik szerepet a címben. A tényleges végpontcím a következő http://localhost:8001/hello/servicemodelsamples: .

A negyedik végpontcím egy abszolút címet és egy másik átvitelt határoz meg – a TCP-t. Az alapcím nem játszik szerepet a címben. A tényleges végpontcím a következő 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" />

Az ügyfél a négy szolgáltatásvégpont közül csak egyet ér el, de mind a négyet a konfigurációs fájlban definiálja. Az ügyfél kiválaszt egy végpontot az objektum létrehozásakor CalculatorProxy . A konfiguráció nevének CalculatorEndpoint1CalculatorEndpoint4 módosításával mindegyik végpontot kipróbálhatja.

A minta futtatásakor a szolgáltatás számba fogja venni az egyes végpontok címét, kötésnevét és szerződésnevét. A metaadat-exchange (MEX) végpont csak egy másik végpont a ServiceHost szempontjából, így megjelenik a listában.

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.

Az ügyfél futtatásakor a műveleti kérelmek és a válaszok megjelennek a szolgáltatás és az ügyfélkonzol ablakaiban is. A szolgáltatás és az ügyfél leállításához nyomja le az ENTER billentyűt az egyes konzolablakokban.

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.

A példa beállítása, elkészítése és futtatása

  1. Győződjön meg arról, hogy elvégezte a Windows Communication Foundation-minták One-Time beállítási eljárását.

  2. A megoldás C# vagy Visual Basic .NET kiadásának létrehozásához kövesse Windows Communication Foundation-mintákcímű témakör utasításait.

  3. Ha a mintát egy vagy több gép közötti konfigurációban szeretné futtatni, kövesse A Windows Communication Foundation-minták futtatásacímű témakör utasításait.

    Megjegyzés:

    Ha a Svcutil.exe használatával hozza létre újra a minta konfigurációját, mindenképpen módosítsa az ügyfélkonfiguráció végpontnevét az ügyfélkódnak megfelelően.