IBindingRuntimePreferences 介面
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
定義選擇性合約,繫結可以實作此合約來指定服務要以同步還是非同步方式處理傳入要求。
public interface class IBindingRuntimePreferences
public interface IBindingRuntimePreferences
type IBindingRuntimePreferences = interface
Public Interface IBindingRuntimePreferences
- 衍生
範例
下列範例會示範實作 IBindingRuntimePreferences 介面之繫結的實作方式。 此程式代碼取自 區塊通道 範例:
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
}
備註
在某些情況下,讓繫結使用同步 Receive 或 Request 方法來處理訊息可能會比較有效率。 Binding 類別可以選擇性地實作 IBindingRuntimePreferences,以便向呼叫端指示這是偏好的方式。
如果系結未實IBindingRuntimePreferences作 ,Windows Communication Foundation (WCF) 服務模型運行時間層預設為使用 和 Request
方法的Receive
異步版本。 如果系結確實實 IBindingRuntimePreferences作 ,WCF 服務模型執行時間層會檢查 的值 ReceiveSynchronously ,並使用該值來判斷呼叫這些方法的同步版本 (Receive 或) 或 Request 異步版本 (BeginReceive 和 EndReceive(IAsyncResult) 或 BeginRequest 和 和) EndRequest(IAsyncResult) 。 如果 IBindingRuntimePreferences 是由繫結所實作,並從 true
屬性傳回 ReceiveSynchronously,則建議您使用同步 Receive 和 Request 方法來從通道接收訊息。 如果繫結並未實作 IBindingRuntimePreferences,或是從 false
屬性傳回 ReceiveSynchronously,則建議您使用非同步 BeginReceive 和 EndReceive(IAsyncResult) 或是 BeginRequest 和 EndRequest(IAsyncResult) 方法。
不論 ReceiveSynchronously 屬性傳回的值為何,所有的繫結都仍然必須針對實作的特定通道型別來提供同步和非同步 Receive
方法版本的有效實作。 如需實作自定義通道的詳細資訊,請參閱 開發通道。
屬性
ReceiveSynchronously |
取得值,這個值指出以同步還是非同步方式處理傳入要求可以比較有效率。 |