IBindingRuntimePreferences Interface

Definição

Define o contrato opcional que pode implementar uma associação para especificar se as solicitações de entrada são manipuladas 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 é obtido 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 Binding , uma classe pode implementar IBindingRuntimePreferences para indicar aos chamadores que essa é a preferência.

Se uma associação não implementar IBindingRuntimePreferences, a camada de Runtime do Modelo de Serviço do WCF (Windows Communication Foundation) usará as versões assíncronas dos Receive métodos e Request . Se uma associação implementar IBindingRuntimePreferences, a camada de Runtime do Modelo de Serviço do WCF verificará o valor de 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 EndReceive(IAsyncResult)BeginRequest 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íncrono BeginReceive e EndReceive(IAsyncResult) ou BeginRequest e 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 Receive dos métodos para os tipos de canal específicos implementados. Para obter mais informações sobre como implementar canais personalizados, consulte Desenvolvendo canais.

Propriedades

ReceiveSynchronously

Obtém um valor que indica se a maneira mais eficiente de manipular as solicitações de entrada é a síncrona ou a assíncrona.

Aplica-se a