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 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. |