Sdílet prostřednictvím


TransferMode Výčet

Definice

Určuje, jestli kanál používá režim streamování nebo vyrovnávací paměti pro přenos zpráv požadavků a odpovědí.

public enum class TransferMode
public enum TransferMode
type TransferMode = 
Public Enum TransferMode
Dědičnost
TransferMode

Pole

Buffered 0

Zprávy požadavků i odpovědí se ukládají do vyrovnávací paměti.

Streamed 1

Zprávy požadavků i odpovědí se streamují.

StreamedRequest 2

Zpráva požadavku se streamuje a zpráva odpovědi se zasadí do vyrovnávací paměti.

StreamedResponse 3

Zpráva požadavku se zasadí do vyrovnávací paměti a zpráva odpovědi se streamuje.

Příklady

Následující příklad nastaví tcpTransportBindingElement.TransferMode vlastnost prostřednictvím Streamed kódu:

TcpTransportBindingElement transport = new TcpTransportBindingElement();  
transport.TransferMode = TransferMode.Streamed;  
BinaryMessageEncodingBindingElement encoder = new BinaryMessageEncodingBindingElement();  
CustomBinding binding = new CustomBinding(encoder, transport);  

Následující příklad nastaví vlastnost TcpTransportBindingElement.TransferMode na Streamed prostřednictvím konfigurace:

<customBinding>  
    <binding name="streamingBinding">  
        <binaryMessageEncoding />  
            <tcpTransport transferMode="Streamed" />  
     </binding>  
</customBinding>  

Poznámky

Přenosy WCF (Windows Communication Foundation) podporují dva režimy přenosu zpráv v každém směru:

  • Přenosy ve vyrovnávací paměti uchovávají celou zprávu v vyrovnávací paměti, dokud přenos nebude dokončen.

  • Streamované přenosy pouze uloží do vyrovnávací paměti záhlaví zpráv a zpřístupňují tělo zprávy jako datový proud, ze kterého lze najednou číst menší části.

Nastavením režimu přenosu na povolíte Streamed streamování komunikace v obou směrech. Nastavení režimu přenosu na StreamedRequest nebo StreamedResponse povolí streamování komunikace pouze v určeném směru.

Streamované přenosy můžou zlepšit škálovatelnost služby tím, že eliminují potřebu velkých vyrovnávacích pamětí. To, jestli změna režimu přenosu skutečně zlepší škálovatelnost v praxi, závisí na velikosti přenášených zpráv. Zlepšení škálovatelnosti by mělo být nejzřetelnější v případě, že velké zprávy používají streamované místo přenosů do vyrovnávací paměti.

Přenosy HTTP, TCP/IP a pojmenovaného kanálu ve výchozím nastavení používají přenosy zpráv ve vyrovnávací paměti. Můžete nastavit hodnoty TransferModeBasicHttpBindingpro vazby , NetTcpBindinga NetNamedPipeBinding systémem poskytnuté pomocí vlastností režimu přenosu, které jsou na nich vystaveny. Režim lze nastavit u NetTcpBinding třídy, například pomocí NetTcpBinding.TransferMode vlastnosti . Můžete ho také nastavit v části konfigurace vazby.

Pro vazby, které nezpřístupňují vlastnost režimu přenosu, lze režim přenosu nastavit na element vazby přenosu a tento prvek lze poté přidat do vlastní vazby. Vytvořte například HttpTransportBindingElement a použijte TransferMode vlastnost k nastavení režimu přenosu při vytváření vlastní vazby. Režim přenosu lze také nastavit v části konfigurace pro vlastní vazbu.

Rozhodnutí použít přenosy ve vyrovnávací paměti nebo streamované přenosy je místním rozhodnutím koncového bodu pro přenosy HTTP. U přenosů HTTP se režim přenosu nerozšířit v rámci připojení ani na proxy servery nebo jiné zprostředkovatele. Nastavení režimu přenosu se neprojeví v popisu servisního kontraktu. Po vygenerování proxy serveru do služby můžete (je to povolené, ale není povinné) upravit konfigurační soubor pro služby určené k použití se streamovanými přenosy a nastavit režim přenosu. U přenosů tcp a pojmenovaných kanálů se režim přenosu šíří jako kontrolní výraz zásady.

Streamed Použití režimu přenosu způsobí, že modul runtime WCF vynutí některá omezení.

  • Operace, ke kterým dochází v rámci streamovaného přenosu, můžou mít kontrakt s maximálně jedním vstupním a/nebo jedním výstupním parametrem ve vrstvě programovacího modelu. Tento parametr odpovídá celému textu zprávy a musí být Message, být podtypem Streamnebo implementovat IXmlSerializable rozhraní. Návratovou hodnotu pro operaci je ekvivalentem výstupního parametru.

  • Některé funkce WCF, jako je spolehlivé zasílání zpráv a zabezpečení na úrovni zpráv SOAP, spoléhají na ukládání zpráv do vyrovnávací paměti pro přenosy. Používání těchto funkcí může snížit nebo eliminovat výhody z hlediska výkonu, které používání streamování přináší. Pokud chcete zabezpečit streamovaný přenos, používejte pouze zabezpečení na úrovni přenosu nebo zabezpečení ve smíšeném režimu, který kombinuje deklarace identity WS-Security se zabezpečením přenosu.

  • Hlavičky SOAP se vždy ukládají do vyrovnávací paměti, i když je režim přenosu nastavený na Streamed. Hlavičky zprávy nesmí překročit velikost kvóty přenosu MaxBufferSize, která je vystavena na různých vazbách a elementech vazby.

Změna režimu přenosu z Buffered na Streamed také změní tvar nativního kanálu přenosu TCP a pojmenovaného kanálu. Pro přenosy do vyrovnávací paměti je IDuplexSessionChannelobrazec nativního kanálu . Pro streamované přenosy jsou IRequestChannel nativní kanály a IReplyChannel. Důsledkem toho je, že se se streamováním přenosu nedají používat kontrakty služeb využívající relace.

Platí pro