IBindingRuntimePreferences Interface

Definição

Define o contrato opcional que um binding pode implementar para especificar se os pedidos recebidos são tratados 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 seguinte mostra a implementação de uma ligação que implementa a IBindingRuntimePreferences interface. Este código é retirado do exemplo 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
}

Observações

Em alguns casos, pode ser mais eficiente para uma ligação processar mensagens com o método síncrono Receive ou Request métodos. Uma classe pode, opcionalmente, Binding implementar IBindingRuntimePreferences para indicar aos chamadores que isto é preferível.

Se uma ligação não implementar IBindingRuntimePreferences, a camada de Runtime do Modelo de Serviço Windows Communication Foundation (WCF) utiliza por defeito as versões assíncronas dos métodos Receive e Request. Se uma ligação implementar IBindingRuntimePreferences, a camada de Runtime do Modelo de Serviço WCF verifica o valor de ReceiveSynchronously e usa isso para determinar se chamar as versões síncronas destes métodos (Receive ou Request) ou as versões assíncronas (BeginReceive e EndReceive(IAsyncResult) /ou BeginRequest e EndRequest(IAsyncResult)). Se IBindingRuntimePreferences for implementado pela ligação e retornos true da ReceiveSynchronously propriedade, recomenda-se que utilize os métodos síncronos Receive e Request para receber mensagens do canal. Se a ligação não implementar IBindingRuntimePreferences ou retornar false da ReceiveSynchronously propriedade, recomenda-se que utilize os métodos assíncronos BeginReceive e EndReceive(IAsyncResult) / BeginRequest ou and EndRequest(IAsyncResult) .

Independentemente do valor devolvido pela ReceiveSynchronously propriedade, todas as ligações devem ainda assim fornecer implementações válidas tanto das versões síncronas como assíncronas dos Receive métodos para os tipos de canais específicos implementados. Para mais informações sobre a implementação de canais personalizados, consulte Desenvolvimento de Canais.

Propriedades

Name Description
ReceiveSynchronously

Obtém um valor que indica se os pedidos recebidos podem ser tratados de forma mais eficiente, síncrona ou assíncrona.

Aplica-se a