Bagikan melalui


IBindingRuntimePreferences Antarmuka

Definisi

Menentukan kontrak opsional yang dapat diterapkan pengikatan untuk menentukan apakah permintaan masuk ditangani secara sinkron atau asinkron oleh layanan.

public interface class IBindingRuntimePreferences
public interface IBindingRuntimePreferences
type IBindingRuntimePreferences = interface
Public Interface IBindingRuntimePreferences
Turunan

Contoh

Contoh berikut menunjukkan implementasi pengikatan yang mengimplementasikan IBindingRuntimePreferences antarmuka. Kode ini diambil dari sampel Saluran Penggugusan :

public class TcpChunkingBinding : Binding, IBindingRuntimePreferences
{
    TcpTransportBindingElement tcpbe;
    ChunkingBindingElement be;
    public TcpChunkingBinding()
        : base()
    {
        Initialize();
    }
    public TcpChunkingBinding(string name, string ns)
        : base(name, ns)
    {
        Initialize();
    }
    public override BindingElementCollection CreateBindingElements()
    {
        BindingElementCollection col = new BindingElementCollection();
        col.Add(be);
        col.Add(tcpbe);
        return col;
    }

    public override string Scheme
    {
        get { return tcpbe.Scheme;  }
    }
    public int MaxBufferedChunks
    {
        get { return this.be.MaxBufferedChunks; }
        set { this.be.MaxBufferedChunks = value; }
    }

    void Initialize()
    {
         be = new ChunkingBindingElement();
         tcpbe = new TcpTransportBindingElement();
        tcpbe.TransferMode=TransferMode.Buffered; //no transport streaming
        tcpbe.MaxReceivedMessageSize = ChunkingUtils.ChunkSize + 100 * 1024; //add 100KB for headers
         this.SendTimeout = new TimeSpan(0, 5, 0);
         this.ReceiveTimeout = this.SendTimeout;
    }

    #region IBindingRuntimePreferences Members
    public bool ReceiveSynchronously
    {
        get { return true; }
    }
    #endregion
}

Keterangan

Dalam beberapa kasus mungkin lebih efisien untuk pengikatan untuk memproses pesan dengan metode atau Request sinkronReceive. Kelas Binding dapat secara opsional mengimplementasikan IBindingRuntimePreferences untuk menunjukkan kepada pemanggil bahwa ini lebih disukai.

Jika pengikatan tidak menerapkan IBindingRuntimePreferences, lapisan Runtime Model Layanan Windows Communication Foundation (WCF) default menggunakan versi asinkron metode Receive dan Request . Jika pengikatan mengimplementasikan IBindingRuntimePreferences, lapisan Runtime Model Layanan WCF memeriksa nilai ReceiveSynchronously dan menggunakannya untuk menentukan apakah akan memanggil versi sinkron metode ini (Receive atau ) atau Requestversi asinkron (BeginReceive dan EndReceive(IAsyncResult) atau BeginRequest dan EndRequest(IAsyncResult)). Jika IBindingRuntimePreferences diimplementasikan oleh pengikatan dan pengembalian dari ReceiveSynchronously properti , disarankan true agar Anda menggunakan metode dan Request sinkron Receive untuk menerima pesan dari saluran. Jika pengikatan tidak mengimplementasikan IBindingRuntimePreferences atau mengembalikan dari ReceiveSynchronously properti , disarankan false agar Anda menggunakan metode asinkron BeginReceive dan EndReceive(IAsyncResult) atau BeginRequest dan EndRequest(IAsyncResult) .

Terlepas dari nilai yang dikembalikan oleh ReceiveSynchronously properti , semua pengikatan masih harus memberikan implementasi yang valid dari versi Receive metode sinkron dan asinkron untuk jenis saluran tertentu yang diterapkan. Untuk informasi selengkapnya tentang menerapkan saluran kustom, lihat Mengembangkan Saluran.

Properti

ReceiveSynchronously

Mendapatkan nilai yang menunjukkan apakah permintaan masuk dapat ditangani secara lebih efisien secara sinkron atau asinkron.

Berlaku untuk