IBindingRuntimePreferences Интерфейс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Определяет необязательный контракт, который может реализовать привязка, чтобы указать, обрабатываются ли входящие запросы синхронно или асинхронно службой.
public interface class IBindingRuntimePreferences
public interface IBindingRuntimePreferences
type IBindingRuntimePreferences = interface
Public Interface IBindingRuntimePreferences
- Производный
Примеры
В следующем примере показана реализация привязки, реализующей IBindingRuntimePreferences интерфейс. Этот код взят из примера канала Chunking Channel :
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) методы.BeginRequestEndRequest(IAsyncResult)
Независимо от значения, возвращаемого свойством ReceiveSynchronously , все привязки по-прежнему должны предоставлять допустимые реализации синхронных и асинхронных версий Receive методов для определенных типов каналов. Дополнительные сведения о реализации пользовательских каналов см. в разделе "Разработка каналов".
Свойства
| Имя | Описание |
|---|---|
| ReceiveSynchronously |
Возвращает значение, указывающее, можно ли обрабатывать входящие запросы более эффективно синхронно или асинхронно. |