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) 或 BeginRequestEndRequest(IAsyncResult) 和) 。 如果绑定实现 IBindingRuntimePreferences 并从 true
属性返回 ReceiveSynchronously,则建议使用同步的 Receive 和 Request 方法从通道接收消息。 如果绑定不实现 IBindingRuntimePreferences,或从 false
属性返回 ReceiveSynchronously,则建议使用异步的 BeginReceive 和 EndReceive(IAsyncResult) 或 BeginRequest 和 EndRequest(IAsyncResult) 方法。
无论 ReceiveSynchronously 属性返回什么值,所有绑定仍然必须为所实现的特定通道类型提供 Receive
方法同步版本和异步版本的有效实现。 有关实现自定义通道的详细信息,请参阅 开发通道。
属性
ReceiveSynchronously |
获取一个值,该值指示传入请求是由同步处理更加有效还是异步处理更加有效。 |