Bagikan melalui


Deskripsi Layanan

Sampel ServiceDescription menunjukkan bagaimana layanan dapat mengambil informasi deskripsi layanannya pada waktu pelaksanaan. Sampel didasarkan pada Memulai, dengan operasi layanan tambahan yang ditentukan untuk mengembalikan informasi deskriptif tentang layanan. Informasi yang dikembalikan mencantumkan alamat dasar dan titik akhir untuk layanan. Layanan ini menyediakan informasi ini menggunakan kelas OperationContext, ServiceHost, dan ServiceDescription.

Dalam sampel ini, klien adalah aplikasi konsol (.exe) dan layanan di-hosting oleh Layanan Informasi Internet (IIS).

Catatan

Prosedur penyiapan dan petunjuk pembuatan untuk sampel ini terdapat di akhir topik ini.

Sampel ini memiliki versi kontrak kalkulator yang dimodifikasi yang disebut IServiceDescriptionCalculator. Kontrak menentukan operasi layanan tambahan bernama GetServiceDescriptionInfo yang mengembalikan string multibaris ke klien yang menjelaskan alamat dasar atau alamat dan titik akhir layanan atau titik akhir untuk layanan.

[ServiceContract(Namespace="http://Microsoft.ServiceModel.Samples")]
public interface IServiceDescriptionCalculator
{
    [OperationContract]
    int Add(int n1, int n2);
    [OperationContract]
    int Subtract(int n1, int n2);
    [OperationContract]
    int Multiply(int n1, int n2);
    [OperationContract]
    int Divide(int n1, int n2);
    [OperationContract]
    string GetServiceDescriptionInfo();
}

Kode implementasi untuk GetServiceDescriptionInfo menggunakan ServiceDescription untuk mencantumkan titik akhir layanan. Karena titik akhir layanan dapat memiliki alamat relatif, titik akhir pertama-tama mencantumkan alamat dasar untuk layanan. Untuk mendapatkan semua informasi ini, kode mendapatkan konteks operasinya menggunakan Current. ServiceHost dan objek ServiceDescription-nya diambil dari konteks operasi. Untuk mencantumkan titik akhir dasar untuk layanan, kode melakukan iterasi melalui koleksi BaseAddresses layanan host. Untuk mencantumkan titik akhir layanan untuk layanan, kode melakukan iterasi melalui koleksi titik akhir deskripsi layanan.

public string GetServiceDescriptionInfo()
{
    string info = "";
    OperationContext operationContext = OperationContext.Current;
    ServiceHost host = (ServiceHost)operationContext.Host;
    ServiceDescription desc = host.Description;
    // Enumerate the base addresses in the service host.
    info += "Base addresses:\n";
    foreach (Uri uri in host.BaseAddresses)
    {
        info += "    " + uri + "\n";
    }
    // Enumerate the service endpoints in the service description.
    info += "Service endpoints:\n";
    foreach (ServiceEndpoint endpoint in desc.Endpoints)
    {
        info += "    Address:  " + endpoint.Address + "\n";
        info += "    Binding:  " + endpoint.Binding.Name + "\n";
        info += "    Contract: " + endpoint.Contract.Name + "\n";
    }
     return info;
}

Saat Anda menjalankan sampel, Anda akan melihat operasi kalkulator lalu informasi layanan yang dikembalikan oleh operasi GetServiceDescriptionInfo. Tekan ENTER di jendela klien untuk mematikan komputer klien.

Add(15,3) = 18
Subtract(145,76) = 69
Multiply(9,81) = 729
Divide(22,7) = 3
GetServiceDescriptionInfo
Base addresses:
    http://<machine-name>/ServiceModelSamples/service.svc
    https://<machine-name>/ServiceModelSamples/service.svc
Service endpoints:
    Address:  http://<machine-name>/ServiceModelSamples/service.svc
    Binding:  WSHttpBinding
    Contract: IServiceDescriptionCalculator
    Address:  http://<machine-name>/ServiceModelSamples/service.svc/mex
    Binding:  MetadataExchangeHttpBinding
    Contract: IMetadataExchange

Press <ENTER> to terminate client.

Untuk menyiapkan, membangun, dan menjalankan sampel

  1. Pastikan Anda telah melakukan Prosedur Penyiapan Satu Kali untuk Sampel Windows Communication Foundation.

  2. Untuk membangun solusi edisi C# atau Visual Basic .NET, ikuti petunjuknya di Membangun Sampel WCF.

  3. Untuk menjalankan sampel dalam konfigurasi satu atau lintas komputer, ikuti instruksi pada Menjalankan Sampel WCF.