Bagikan melalui


OperationContractAttribute.IsOneWay Properti

Definisi

Mendapatkan atau menetapkan nilai yang menunjukkan apakah operasi mengembalikan pesan balasan.

public:
 property bool IsOneWay { bool get(); void set(bool value); };
public bool IsOneWay { get; set; }
member this.IsOneWay : bool with get, set
Public Property IsOneWay As Boolean

Nilai Properti

true jika metode ini menerima pesan permintaan dan tidak mengembalikan pesan balasan; jika tidak, false. Defaultnya adalah false.

Contoh

Contoh berikut adalah layanan yang menerapkan kontrak layanan yang menentukan tiga operasi. Dua metode menerapkan operasi dua arah, yang mengembalikan pesan respons yang mendasar ke pemanggil tidak peduli apa nilai pengembaliannya. Metode ketiga mengimplementasikan operasi yang menerima panggilan (pesan masuk yang mendasar) tetapi tidak mengembalikan pesan respons yang mendasar.

[ServiceContract]
public class OneAndTwoWay
{
  // The client waits until a response message appears.
  [OperationContract]
  public int MethodOne (int x, out int y)
  {
    y = 34;
    return 0;
  }

  // The client waits until an empty response message appears.
  [OperationContract]
  public void MethodTwo (int x)
  {
    return;
  }

  // The client returns as soon as an outbound message
  // is queued for dispatch to the service; no response
  // message is generated or sent.
  [OperationContract(IsOneWay=true)]
  public void MethodThree (int x)
  {
    return;
  }
}

Keterangan

IsOneWay Gunakan properti untuk menunjukkan bahwa operasi tidak mengembalikan pesan balasan. Jenis operasi ini berguna untuk pemberitahuan atau komunikasi gaya peristiwa, terutama dalam komunikasi dua arah. Tanpa menunggu pesan respons yang mendasar, pemanggil operasi satu arah tidak memiliki cara langsung untuk mendeteksi kegagalan dalam memproses pesan permintaan. (Aplikasi layanan yang menggunakan saluran andal dan operasi satu arah dapat mendeteksi kegagalan pengiriman pesan di tingkat saluran. Untuk detailnya, lihat Gambaran Umum Sesi Andal.)

Dalam aplikasi berorientasi layanan dupleks (atau dua arah) di mana klien dan server berkomunikasi satu sama lain secara independen, saluran klien dapat menggunakan IsOneWay properti pada metodenya untuk menunjukkan bahwa layanan dapat melakukan panggilan satu arah ke klien yang dapat diperlakukan klien sebagai peristiwa. Tidak ada panggilan atau pesan pengembalian yang dihasilkan karena layanan tidak mengharapkan pesan respons apa pun.

IsOneWay Jika properti diatur ke false (default), bahkan metode yang mengembalikan void menghasilkan pesan balasan. Dalam hal ini, infrastruktur membuat dan mengirim pesan kosong untuk menunjukkan kepada pemanggil bahwa metode telah dikembalikan. (Menggunakan pendekatan ini memungkinkan infrastruktur untuk mengirim kesalahan SOAP kembali ke klien.) Pengaturan IsOneWay ke true adalah satu-satunya cara untuk membatalkan pembuatan dan pengiriman pesan respons.

Metode satu arah tidak boleh mengembalikan nilai atau memiliki ref atau out parameter; jika tidak, System.InvalidOperationException pengecualian dilemparkan.

Menentukan bahwa operasi adalah operasi satu arah berarti hanya bahwa tidak ada pesan respons. Dimungkinkan untuk memblokir jika koneksi tidak dapat dibuat, atau pesan keluar sangat besar, atau jika layanan tidak dapat membaca informasi masuk dengan cukup cepat. Jika klien memerlukan panggilan non-pemblokiran, buat AsyncPattern operasi. Untuk informasi selengkapnya, lihat LayananOne-Way dan Mengakses Layanan Menggunakan Klien WCF.

Berlaku untuk