IBindingRuntimePreferences Interfaz
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Define el contrato opcional que un enlace puede implementar para especificar si el servicio administra de forma asincrónica o asincrónica las solicitudes entrantes.
public interface class IBindingRuntimePreferences
public interface IBindingRuntimePreferences
type IBindingRuntimePreferences = interface
Public Interface IBindingRuntimePreferences
- Derivado
Ejemplos
El ejemplo siguiente muestra la implementación de un enlace que implementa la interfaz IBindingRuntimePreferences. Este código se toma del ejemplo de canal de fragmentación :
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
}
Comentarios
Puede ser más eficaz para un enlace procesar los mensajes con los métodos sincrónicos Receive o Request en algunos casos. Una clase Binding puede implementar opcionalmente IBindingRuntimePreferences para indicar a los llamadores que se prefiere esto.
Si un enlace no implementa IBindingRuntimePreferences, el nivel de tiempo de ejecución del modelo de servicio de Windows Communication Foundation (WCF) usa de forma predeterminada las versiones asincrónicas de los Receive
métodos y Request
. Si un enlace implementa IBindingRuntimePreferences, el nivel de tiempo de ejecución del modelo de servicio WCF comprueba el valor de ReceiveSynchronously y usa para determinar si se deben llamar a las versiones sincrónicas de estos métodos (Receive o Request) o las versiones asincrónicas (BeginReceive y EndReceive(IAsyncResult) o BeginRequest y EndRequest(IAsyncResult)). Si IBindingRuntimePreferences es implementado por el enlace y devuelve true
desde la propiedad ReceiveSynchronously, se recomienda que utilice los métodos sincrónicos Receive y Request para recibir los mensajes del canal. Si el enlace no implementa IBindingRuntimePreferences ni devuelve false
desde la propiedad ReceiveSynchronously, se recomienda que utilice los métodos asincrónicos BeginReceive y EndReceive(IAsyncResult) o BeginRequest y EndRequest(IAsyncResult).
Sin tener en cuenta el valor devuelto por la propiedad ReceiveSynchronously, todos los enlaces deben proporcionar implementaciones válidas de la versión sincrónica y de la asincrónica de los métodos Receive
para los tipos de canal concretos implementados. Para obtener más información sobre la implementación de canales personalizados, consulte Desarrollo de canales.
Propiedades
ReceiveSynchronously |
Obtiene un valor que indica si se pueden administrar más eficazmente las solicitudes entrantes de forma sincrónica o asincrónica. |