TransferMode Enum
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Geeft aan of een kanaal gebruikmaakt van gestreamde of gebufferde modi voor de overdracht van aanvraag- en antwoordberichten.
public enum class TransferMode
public enum TransferMode
type TransferMode =
Public Enum TransferMode
- Overname
Velden
| Name | Waarde | Description |
|---|---|---|
| Buffered | 0 | De aanvraag- en antwoordberichten worden beide gebufferd. |
| Streamed | 1 | De aanvraag- en antwoordberichten worden beide gestreamd. |
| StreamedRequest | 2 | Het aanvraagbericht wordt gestreamd en het antwoordbericht wordt gebufferd. |
| StreamedResponse | 3 | Het aanvraagbericht wordt gebufferd en het antwoordbericht wordt gestreamd. |
Voorbeelden
In het volgende voorbeeld wordt de eigenschap TcpTransportBindingElement.TransferMode ingesteld op Streamed via code:
TcpTransportBindingElement transport = new TcpTransportBindingElement();
transport.TransferMode = TransferMode.Streamed;
BinaryMessageEncodingBindingElement encoder = new BinaryMessageEncodingBindingElement();
CustomBinding binding = new CustomBinding(encoder, transport);
In het volgende voorbeeld wordt de eigenschap TcpTransportBindingElement.TransferMode ingesteld Streamed op via de configuratie:
<customBinding>
<binding name="streamingBinding">
<binaryMessageEncoding />
<tcpTransport transferMode="Streamed" />
</binding>
</customBinding>
Opmerkingen
Windows Communication Foundation (WCF)-transporten ondersteunen twee manieren om berichten in elke richting over te dragen:
Bij overdrachten met buffers wordt het hele bericht in een geheugenbuffer opgeslagen totdat de overdracht is voltooid.
Gestreamde overdrachten bufferen alleen de berichtkoppen en maken de berichttekst beschikbaar als een stroom, van waaruit kleinere delen tegelijk kunnen worden gelezen.
Door de overdrachtsmodus in te stellen op Streamed, wordt streamingcommunicatie in beide richtingen mogelijk gemaakt. Door de overdrachtsmodus in te stellen op StreamedRequest of StreamedResponse wordt streamingcommunicatie alleen in de aangegeven richting ingeschakeld.
Gestreamde overdrachten kunnen de schaalbaarheid van een service verbeteren door de noodzaak van grote geheugenbuffers te elimineren. Of het wijzigen van de overdrachtsmodus de schaalbaarheid in de praktijk verbetert, is afhankelijk van de grootte van de berichten die worden overgedragen. Verbeteringen in schaalbaarheid moeten het duidelijkst zijn wanneer grote berichten worden gestreamd in plaats van bufferoverdrachten.
Standaard maken de HTTP-, TCP/IP- en benoemde pijptransporten gebruik van gebufferde berichtoverdrachten. U kunt de waarden van de bindingen NetTcpBindingen NetNamedPipeBinding door het BasicHttpBindingsysteem geleverde bindingen instellen met behulp van TransferMode de eigenschappen van de overdrachtsmodus die erop worden weergegeven. De modus kan worden ingesteld op de NetTcpBinding klasse, bijvoorbeeld met behulp van de NetTcpBinding.TransferMode eigenschap. Deze kan ook worden ingesteld in de configuratiesectie voor de binding.
Voor bindingen die de eigenschap overdrachtsmodus niet beschikbaar maken, kan de overdrachtsmodus worden ingesteld op het bindingselement van het transport en kan dit element vervolgens worden toegevoegd aan een aangepaste binding. Maak bijvoorbeeld een HttpTransportBindingElement en gebruik de TransferMode eigenschap om de overdrachtsmodus in te stellen bij het maken van een aangepaste binding. De overdrachtsmodus kan ook worden ingesteld in de configuratiesectie voor de aangepaste binding.
De beslissing om gebufferde of gestreamde overdrachten te gebruiken, is een lokale beslissing van het eindpunt voor HTTP-transporten. Voor HTTP-transporten wordt de overdrachtsmodus niet doorgegeven aan een verbinding of aan proxyservers of andere tussenpersonen. Het instellen van de overdrachtsmodus wordt niet weergegeven in de beschrijving van het servicecontract. Nadat u een proxy naar een service hebt gegenereerd, kunt u (het is toegestaan maar niet vereist) het configuratiebestand bewerken voor services die zijn bedoeld voor gebruik met gestreamde overdrachten om de overdrachtsmodus in te stellen. Voor TCP- en benoemde pijptransporten wordt de overdrachtsmodus doorgegeven als een beleidsverklaring.
Als u de Streamed overdrachtsmodus gebruikt, worden bepaalde beperkingen afgedwongen door de WCF-runtime.
Bewerkingen die plaatsvinden in een gestreamd transport, kunnen een contract hebben met ten hoogste één invoer- en/of één uitvoerparameter op de laag van het programmeermodel. Deze parameter komt overeen met de hele hoofdtekst van het bericht en moet een Message, een subtype van Streamzijn of de IXmlSerializable interface implementeren. Het hebben van een retourwaarde voor een bewerking is gelijk aan het hebben van een uitvoerparameter.
Sommige WCF-functies, zoals Reliable Messaging en SOAP-berichtniveaubeveiliging, zijn afhankelijk van bufferberichten voor verzendingen. Het gebruik van deze functies kan de prestatievoordelen die zijn opgedaan met streaming verminderen of elimineren. Als u een gestreamd transport wilt beveiligen, gebruikt u alleen beveiliging op transportniveau of gebruikt u mixed-mode-beveiliging, waarbij WS-Security claims worden gecombineerd met transportbeveiliging.
SOAP-headers worden altijd gebufferd, zelfs wanneer de overdrachtsmodus is ingesteld op
Streamed. De kopteksten voor een bericht mogen niet groter zijn dan de grootte van het Transportquotum maxBufferSize dat wordt weergegeven op de verschillende bindingen en bindingselementen.
Als u de overdrachtsmodus wijzigt van Buffered waaruit Streamed ook de systeemeigen kanaalvorm van tcp en benoemde pijptransporten wordt gewijzigd. Voor gebufferde overdrachten is IDuplexSessionChannel de vorm van het systeemeigen kanaal. Voor gestreamde overdrachten zijn IRequestChannel de systeemeigen kanalen en IReplyChannel. Een gevolg hiervan is dat sessievolle servicecontracten niet kunnen worden gebruikt met transportstreaming.