Bagikan melalui


Cara: Membuat Kontrak Satu Arah

Topik ini menunjukkan langkah-langkah dasar untuk membuat metode yang menggunakan kontrak satu arah. Metode tersebut memanggil operasi pada layanan Windows Communication Foundation (WCF) dari klien tetapi tidak mengharapkan balasan. Jenis kontrak ini dapat digunakan, misalnya, untuk menerbitkan pemberitahuan kepada banyak pelanggan. Anda juga dapat menggunakan kontrak satu arah saat membuat kontrak dupleks (dua arah), yang memungkinkan klien dan server berkomunikasi satu sama lain secara independen sehingga dapat memulai panggilan ke yang lain. Ini dapat memungkinkan, khususnya, server untuk melakukan panggilan satu arah ke klien yang dapat diperlakukan klien sebagai peristiwa. Untuk mengetahui informasi mendetail tentang menentukan metode satu arah, lihat properti IsOneWay dan kelas OperationContractAttribute.

Untuk mengetahui informasi selengkapnya tentang membuat aplikasi klien untuk kontrak dupleks, lihat Cara: Mengakses Layanan dengan Kontrak Satu Arah dan Permintaan-Balasan. Untuk sampel yang berfungsi, lihat sampel Satu Arah.

Untuk membuat kontrak satu arah

  1. Buat kontrak layanan dengan menerapkan kelas ServiceContractAttribute ke antarmuka yang menentukan metode yang akan diterapkan layanan.

  2. Menunjukkan metode mana dalam antarmuka yang dapat dipanggil klien dengan menerapkan kelas OperationContractAttribute ke metode tersebut.

  3. Tentukan operasi yang tidak boleh memiliki output (tidak ada nilai pengembalian dan tidak ada parameter keluar atau ref) sebagai satu arah dengan mengatur properti IsOneWay ke true. Perhatikan bahwa operasi yang membawa kelas OperationContractAttribute memenuhi kontrak balasan permintaan secara default karena properti IsOneWay merupakan false secara default. Jadi, Anda harus secara eksplisit menentukan nilai properti atribut menjadi true jika menginginkan kontrak satu arah untuk metode tersebut.

Contoh

Contoh kode berikut mendefinisikan kontrak untuk layanan yang menyertakan beberapa metode satu arah. Semua metode memiliki kontrak satu arah kecuali Equals, yang default untuk meminta balasan dan menampilkan hasil.

[ServiceContract(Namespace="http://Microsoft.ServiceModel.Samples", SessionMode=SessionMode.Required)]
public interface ICalculatorSession
{
    [OperationContract(IsOneWay=true)]
    void Clear();
    [OperationContract(IsOneWay = true)]
    void AddTo(double n);
    [OperationContract(IsOneWay = true)]
    void SubtractFrom(double n);
    [OperationContract(IsOneWay = true)]
    void MultiplyBy(double n);
    [OperationContract(IsOneWay = true)]
    void DivideBy(double n);
    [OperationContract]
    double Equals();
}
<ServiceContract(Namespace:="http://Microsoft.ServiceModel.Samples", SessionMode:=SessionMode.Required)> _
Public Interface ICalculatorSession

    <OperationContract(IsOneWay:=True)> _
    Sub Clear()
    <OperationContract(IsOneWay:=True)> _
    Sub AddTo(ByVal n As Double)
    <OperationContract(IsOneWay:=True)> _
    Sub SubtractFrom(ByVal n As Double)
    <OperationContract(IsOneWay:=True)> _
    Sub MultiplyBy(ByVal n As Double)
    <OperationContract(IsOneWay:=True)> _
    Sub DivideBy(ByVal n As Double)
    <OperationContract()> _
    Function Equal() As Double
End Interface

Lihat juga