TransferMode Výčet
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í.
Určuje, jestli kanál používá streamované nebo vyrovnávací režimy 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
Pole
| Name | Hodnota | Description |
|---|---|---|
| Buffered | 0 | Zprávy požadavku i odpovědi se ukládají do vyrovnávací paměti. |
| Streamed | 1 | Zprávy požadavku i odpovědi se streamují. |
| StreamedRequest | 2 | Zpráva požadavku se streamuje a zpráva odpovědi se do vyrovnávací paměti. |
| StreamedResponse | 3 | Zpráva požadavku je uložená do vyrovnávací paměti a zpráva odpovědi se streamuje. |
Příklady
Následující příklad nastaví TcpTransportBindingElement.TransferMode vlastnost Streamed prostřednictvím 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í TcpTransportBindingElement.TransferMode vlastnost 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 s vyrovnávací pamětí uchovávají celou zprávu v paměti až do dokončení přenosu.
Streamované přenosy uloží do vyrovnávací paměti pouze hlavičky zprávy a zpřístupňují text zprávy jako datový proud, ze kterého lze najednou číst menší části.
Nastavením režimu přenosu na Streamed povolíte obousměrnou streamovanou komunikaci. Nastavení režimu přenosu na StreamedRequest streamovací komunikaci nebo StreamedResponse povolení komunikace pouze v uvedené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í paměti. To, jestli změna režimu přenosu skutečně zlepšuje škálovatelnost v praxi, závisí na velikosti přenášených zpráv. Vylepšení škálovatelnosti by měla být nejjevnější, když velké zprávy používají streamované místo přenosů ve vyrovnávací paměti.
Ve výchozím nastavení protokol HTTP, TCP/IP a pojmenované přenosy kanálu používají přenosy zpráv ve vyrovnávací paměti. Pomocí vlastností režimu přenosu, které jsou na nich vystaveny, můžete nastavit hodnoty v TransferModeBasicHttpBindingNetTcpBindingvazbu , a NetNamedPipeBinding systémové vazby. Režim lze nastavit NetTcpBinding pro třídu, například pomocí NetTcpBinding.TransferMode vlastnosti. Dá se také nastavit v části konfigurace pro vazbu.
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 přidat do vlastní vazby. Například vytvořte 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í o použití přenosů ve vyrovnávací paměti nebo streamovaných přenosech je místní rozhodnutí koncového bodu pro přenosy HTTP. U přenosů HTTP se režim přenosu nerozšířit mezi připojení ani na proxy servery nebo jiné zprostředkovatele. Nastavení režimu přenosu se neprojeví v popisu kontraktu služby. Po vygenerování proxy serveru do služby můžete (ale není to nutné) upravit konfigurační soubor pro služby určené k použití se streamovanými přenosy k nastavení režimu přenosu. U přenosů TCP a pojmenovaných rour se režim přenosu propaguje jako zásadní tvrzení.
Streamed Použití režimu přenosu způsobí, že modul runtime WCF vynucuje určitá omezení.
Operace, ke kterým dochází napříč streamovaným přenosem, můžou mít kontrakt s maximálně jedním vstupním 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 Messagepodtyp nebo Streamimplementovat IXmlSerializable rozhraní. Návratová hodnota operace odpovídá výstupnímu parametru.
Některé funkce WCF, jako je spolehlivé zasílání zpráv a zabezpečení na úrovni zpráv SOAP, závisí 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 výkonu získané pomocí streamování. Chcete-li zabezpečit streamovaný přenos, použijte pouze zabezpečení na úrovni přenosu nebo použijte zabezpečení smíšeného režimu, které kombinuje WS-Security deklarací identity se zabezpečením přenosu.
Hlavičky SOAP jsou vždy uloženy 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 prvcích vazby.
Změna režimu přenosu z Buffered tak, aby Streamed se změnil také tvar nativního kanálu přenosu TCP a pojmenované kanály. Pro přenosy do vyrovnávací paměti je IDuplexSessionChannelobrazec nativního kanálu . Nativní kanály pro streamované přenosy jsou IRequestChannel a IReplyChannel. Následkem toho je, že se kontrakty služby sessionful nedají použít se streamováním přenosu.