IBindingRuntimePreferences Rozhraní
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Definuje volitelný kontrakt, který může vazba implementovat za účelem určení, zda služba zpracovává příchozí požadavky synchronně nebo asynchronně.
public interface class IBindingRuntimePreferences
public interface IBindingRuntimePreferences
type IBindingRuntimePreferences = interface
Public Interface IBindingRuntimePreferences
- Odvozené
Příklady
Následující příklad ukazuje implementaci vazby, která implementuje IBindingRuntimePreferences rozhraní. Tento kód je převzatý z ukázky kanálu chunking :
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
}
Poznámky
V některých případech může být pro vazbu efektivnější zpracovávat zprávy synchronními Receive metodami nebo Request metodami. Třída Binding může volitelně implementovat IBindingRuntimePreferences , aby volajícím naznačovala, že je to upřednostňované.
Pokud vazba neimplementuje IBindingRuntimePreferences, vrstva Windows Communication Foundation (WCF) Service Model Runtime ve výchozím nastavení používá asynchronní verze Receive
metod a Request
. Pokud vazba implementuje IBindingRuntimePreferences, vrstva modulu runtime modelu služby WCF zkontroluje hodnotu ReceiveSynchronously a použije ji k určení, zda se mají volat synchronní verze těchto metod (Receive nebo Request) nebo asynchronní verze (BeginReceive a EndReceive(IAsyncResult) nebo BeginRequest a EndRequest(IAsyncResult)). Pokud IBindingRuntimePreferences je implementována vazbou a vrací true
se z ReceiveSynchronously vlastnosti, doporučuje se použít synchronní Receive a Request metody pro příjem zpráv z kanálu. Pokud vazba neimplementuje IBindingRuntimePreferences nebo nevrací false
z ReceiveSynchronously vlastnosti, doporučuje se použít asynchronní BeginReceive metody a nebo BeginRequestEndReceive(IAsyncResult) aEndRequest(IAsyncResult).
Bez ohledu na hodnotu vrácenou ReceiveSynchronously vlastností musí všechny vazby stále poskytovat platné implementace synchronní i asynchronní verze Receive
metod pro konkrétní implementované typy kanálů. Další informace o implementaci vlastních kanálů najdete v tématu Vývoj kanálů.
Vlastnosti
ReceiveSynchronously |
Získá hodnotu, která označuje, zda příchozí požadavky lze zpracovávat efektivněji synchronně nebo asynchronně. |