IBindingRuntimePreferences Schnittstelle
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Definiert den optionalen Vertrag, der von einer Bindung implementiert werden kann, um anzugeben, ob eingehende Anforderungen vom Dienst synchron oder asynchron behandelt werden.
public interface class IBindingRuntimePreferences
public interface IBindingRuntimePreferences
type IBindingRuntimePreferences = interface
Public Interface IBindingRuntimePreferences
- Abgeleitet
Beispiele
Im folgenden Beispiel wird die Implementierung einer Bindung veranschaulicht, die die IBindingRuntimePreferences-Schnittstelle implementiert. Dieser Code stammt aus dem Chunking Channel-Beispiel :
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
}
Hinweise
In einigen Fällen können Nachrichten durch eine Bindung effizienter mit der synchronen Receive-Methode oder mit der synchronen Request-Methode verarbeitet werden. Binding kann optional von einer IBindingRuntimePreferences-Klasse implementiert werden, um die bevorzugte Verarbeitung gegenüber dem Aufrufer anzugeben.
Wenn eine Bindung nicht implementiert IBindingRuntimePreferences, verwendet die Windows Communication Foundation (WCF) Service Model Runtime-Schicht standardmäßig die asynchronen Versionen der Receive
Methoden und Request
. Wenn eine Bindung implementiert IBindingRuntimePreferences, überprüft die WCF-Dienstmodelllaufzeitebene den Wert von ReceiveSynchronously und verwendet diesen, um zu bestimmen, ob die synchronen Versionen dieser Methoden (Receive oder Request) oder die asynchronen Versionen (BeginReceive und und EndReceive(IAsyncResult)BeginRequest ) aufgerufen werden EndRequest(IAsyncResult)sollen. Wenn IBindingRuntimePreferences von der Bindung implementiert wird und true
von der ReceiveSynchronously-Eigenschaft zurückgibt, wird empfohlen, die synchrone Receive-Methode und die synchrone Request-Methode zum Empfangen von Nachrichten vom Kanal zu verwenden. Wenn IBindingRuntimePreferences von der Bindung nicht implementiert wird oder false
von der ReceiveSynchronously-Eigenschaft zurückgibt, wird empfohlen, die asynchrone BeginReceive-Methode und die asynchrone EndReceive(IAsyncResult)-Methode oder die asynchrone BeginRequest-Methode und die asynchrone EndRequest(IAsyncResult)-Methode zu verwenden.
Unabhängig vom Wert, der von der ReceiveSynchronously-Eigenschaft zurückgegeben wird, müssen alle Bindungen weiterhin gültige Implementierungen der synchronen und der asynchronen Versionen der Receive
-Methode für die implementierten Kanaltypen bereitstellen. Weitere Informationen zum Implementieren benutzerdefinierter Kanäle finden Sie unter Entwickeln von Kanälen.
Eigenschaften
ReceiveSynchronously |
Ruft einen Wert ab, der angibt, ob eingehende Anforderungen effizienter synchron oder asynchron behandelt werden können. |