Bagikan melalui


Mengatasi

Sampel Pengalamatan menunjukkan berbagai aspek dan fitur alamat titik akhir. Sampel didasarkan pada Getting Started. Dalam sampel ini, layanan dihost sendiri. Baik layanan maupun klien adalah aplikasi konsol. Layanan ini mendefinisikan beberapa titik akhir menggunakan kombinasi alamat titik akhir relatif dan absolut.

Nota

Prosedur penyiapan dan instruksi build untuk sampel ini terletak di akhir topik ini.

File konfigurasi layanan menentukan alamat dasar dan empat titik akhir. Alamat dasar ditentukan menggunakan elemen tambahkan, di bawah service/host/baseAddresses seperti yang ditunjukkan dalam konfigurasi sampel berikut.

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

Definisi titik akhir pertama yang ditunjukkan dalam konfigurasi sampel berikut menentukan alamat relatif, yang berarti alamat titik akhir adalah kombinasi dari alamat dasar dan alamat relatif mengikuti aturan komposisi 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" />

Dalam hal ini, alamat relatif kosong (""), sehingga alamat titik akhir sama dengan alamat dasar. Alamat titik akhir aktual adalah http://localhost:8000/servicemodelsamples/service.

Definisi titik akhir kedua juga menentukan alamat relatif, seperti yang ditunjukkan dalam konfigurasi sampel berikut.

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

Alamat relatif, "uji", ditambahkan ke alamat dasar. Alamat titik akhir aktual adalah http://localhost:8000/servicemodelsamples/service/test.

Definisi titik akhir ketiga menentukan alamat absolut, seperti yang ditunjukkan dalam konfigurasi sampel berikut.

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

Alamat dasar tidak memainkan peran dalam alamat. Alamat titik akhir aktual adalah http://localhost:8001/hello/servicemodelsamples.

Alamat titik akhir keempat menentukan alamat absolut dan transportasi yang berbeda—TCP. Alamat dasar tidak memainkan peran dalam alamat. Alamat titik akhir aktual adalah 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" />

Klien hanya mengakses salah satu dari empat titik akhir layanan, tetapi keempatnya didefinisikan dalam file konfigurasinya. Klien memilih titik akhir saat membuat CalculatorProxy objek. Dengan mengubah nama konfigurasi dari CalculatorEndpoint1 melalui CalculatorEndpoint4, Anda dapat menjalankan setiap endpoint.

Saat Anda menjalankan sampel, layanan menghitung alamat, nama pengikatan, dan nama kontrak untuk setiap titik akhirnya. Titik akhir pertukaran metadata (MEX) hanyalah titik akhir lain dari perspektif ServiceHost sehingga muncul dalam daftar.

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.

Saat Anda menjalankan klien, permintaan dan respons operasi ditampilkan di jendela layanan dan konsol klien. Tekan ENTER di setiap jendela konsol untuk mematikan layanan dan klien.

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.

Untuk menyiapkan, mengompilasi, dan menjalankan sampel

  1. Pastikan Anda telah melakukan Prosedur Penyiapan One-Time untuk Sampel Windows Communication Foundation.

  2. Untuk membangun solusi edisi C# atau Visual Basic .NET, ikuti instruksi di Membangun Sampel Windows Communication Foundation.

  3. Untuk menjalankan sampel dalam konfigurasi satu atau lintas komputer, ikuti instruksi di Menjalankan Sampel Windows Communication Foundation.

    Nota

    Jika Anda menggunakan Svcutil.exe untuk meregenerasi konfigurasi untuk sampel ini, pastikan untuk mengubah nama titik akhir dalam konfigurasi klien agar sesuai dengan kode klien.