IBindingRuntimePreferences Interface
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Define o contrato opcional que uma associação pode implementar para especificar se as solicitações de entrada são tratadas de forma síncrona ou assíncrona pelo serviço.
public interface class IBindingRuntimePreferences
public interface IBindingRuntimePreferences
type IBindingRuntimePreferences = interface
Public Interface IBindingRuntimePreferences
- Derivado
Exemplos
O exemplo a seguir mostra a implementação de uma associação que implementa a IBindingRuntimePreferences interface. Esse código é extraído do exemplo de Canal de Agrupamento :
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
}
Comentários
Em alguns casos, pode ser mais eficiente para uma associação processar mensagens com os métodos Receive ou Request síncronos. Opcionalmente, uma Binding classe pode implementar IBindingRuntimePreferences para indicar aos chamadores que essa é a preferência.
Se uma associação não implementarIBindingRuntimePreferences, a camada de Runtime do Modelo de Serviço do Windows Communication Foundation (WCF) usará as versões assíncronas dos métodos e Request das Receive versões. Se uma associação for implementadaIBindingRuntimePreferences, a camada WCF Service Model Runtime verificará o valor ReceiveSynchronously e usará isso para determinar se as versões síncronas desses métodos (Receive ou Request) ou as versões assíncronas (BeginReceive e ou BeginRequestEndReceive(IAsyncResult) e EndRequest(IAsyncResult)). Se IBindingRuntimePreferences for implementado pela associação e retornar true da ReceiveSynchronously propriedade, é recomendável que você use os métodos Receive e Request síncronos para receber mensagens do canal. Se a associação não implementar IBindingRuntimePreferences ou retornar false da ReceiveSynchronously propriedade, é recomendável que você use os métodos assíncronos BeginReceive e EndReceive(IAsyncResult) ou eBeginRequest.EndRequest(IAsyncResult)
Independentemente do valor retornado pela ReceiveSynchronously propriedade, todas as associações ainda devem fornecer implementações válidas das versões síncronas e assíncronas dos Receive métodos para os tipos de canal específicos implementados. Para obter mais informações sobre como implementar canais personalizados, consulte Desenvolvendo canais.
Propriedades
| Nome | Description |
|---|---|
| ReceiveSynchronously |
Obtém um valor que indica se as solicitações de entrada podem ser tratadas de forma mais eficiente de forma síncrona ou assíncrona. |