IBindingRuntimePreferences Interface
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
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. |