IBindingRuntimePreferences Интерфейс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Определяет необязательный контракт, который можно реализовать в привязке, чтобы указать способ обработки входящих запросов службой (синхронный или асинхронный).
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) по умолчанию использует асинхронные Receive
версии методов и Request
. Если привязка реализует 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 |
Возвращает значение, указывающее наиболее эффективный способ обработки входящих запросов: синхронный или асинхронный. |