TransferMode Enum
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Anger om en kanal använder strömmade eller buffrade lägen för överföring av begärande- och svarsmeddelanden.
public enum class TransferMode
public enum TransferMode
type TransferMode =
Public Enum TransferMode
- Arv
Fält
| Name | Värde | Description |
|---|---|---|
| Buffered | 0 | Både begärande- och svarsmeddelandena buffrade. |
| Streamed | 1 | Både begärande- och svarsmeddelandena strömmas. |
| StreamedRequest | 2 | Begärandemeddelandet strömmas och svarsmeddelandet buffrades. |
| StreamedResponse | 3 | Begärandemeddelandet buffrades och svarsmeddelandet strömmas. |
Exempel
I följande exempel anges egenskapen TcpTransportBindingElement.TransferMode till Streamed via kod:
TcpTransportBindingElement transport = new TcpTransportBindingElement();
transport.TransferMode = TransferMode.Streamed;
BinaryMessageEncodingBindingElement encoder = new BinaryMessageEncodingBindingElement();
CustomBinding binding = new CustomBinding(encoder, transport);
I följande exempel anges egenskapen TcpTransportBindingElement.TransferMode till Streamed via konfiguration:
<customBinding>
<binding name="streamingBinding">
<binaryMessageEncoding />
<tcpTransport transferMode="Streamed" />
</binding>
</customBinding>
Kommentarer
Windows Communication Foundation (WCF) har stöd för två överföringslägen för meddelanden i varje riktning:
Buffrade överföringar innehåller hela meddelandet i en minnesbuffert tills överföringen är klar.
Strömmade överföringar buffrar endast meddelanderubrikerna och exponerar meddelandetexten som en ström, från vilken mindre delar kan läsas åt gången.
Genom att ställa in överföringsläget till Streamed aktiveras strömmande kommunikation i båda riktningarna. Ställa in överföringsläget på StreamedRequest eller StreamedResponse aktiverar endast direktuppspelningskommunikation i angiven riktning.
Strömmade överföringar kan förbättra skalbarheten för en tjänst genom att eliminera behovet av stora minnesbuffertar. Om ändring av överföringsläget faktiskt förbättrar skalbarheten i praktiken beror på storleken på de meddelanden som överförs. Förbättringar av skalbarheten bör vara tydligast när stora meddelanden använder strömmade i stället för buffrade överföringar.
Som standard använder HTTP, TCP/IP och namngivna rörtransporter buffrade meddelandeöverföringar. Du kan ange värdena för på BasicHttpBindingbindningarna , NetTcpBindingoch NetNamedPipeBinding system som tillhandahålls med hjälp av TransferMode de egenskaper för överföringsläge som exponeras för dem. Läget kan ställas in på NetTcpBinding klassen, till exempel med hjälp NetTcpBinding.TransferMode av egenskapen . Det kan också anges i konfigurationsavsnittet för bindningen.
För bindningar som inte exponerar egenskapen för överföringsläge kan överföringsläget anges för transportens bindningselement och det här elementet kan sedan läggas till i en anpassad bindning. Skapa till exempel en HttpTransportBindingElement och använd TransferMode egenskapen för att ange överföringsläget när du skapar en anpassad bindning. Överföringsläget kan också anges i konfigurationsavsnittet för den anpassade bindningen.
Beslutet att använda buffrade eller strömmade överföringar är ett lokalt beslut av slutpunkten för HTTP-transporter. För HTTP-transporter sprids inte överföringsläget över en anslutning eller till proxyservrar eller andra mellanhänder. Att ange överföringsläget återspeglas inte i beskrivningen av tjänstkontraktet. När du har genererat en proxy till en tjänst kan du (det är tillåtet men inte nödvändigt) redigera konfigurationsfilen för tjänster som ska användas med strömmade överföringar för att ange överföringsläget. För TCP- och namngivna pipelines-transporter vidarebefordras överföringsläget som en policyhävdelse.
Användning av överföringsläget Streamed gör att WCF-körningen framtvingar vissa begränsningar.
Åtgärder som utförs i en strömmad transport kan ha ett kontrakt med högst en indata- och/eller en utdataparameter på programmeringsmodelllagret. Den parametern motsvarar hela meddelandets brödtext och måste vara en Message, vara en undertyp av Streameller implementera IXmlSerializable gränssnittet. Att ha ett returvärde för en åtgärd motsvarar att ha en utdataparameter.
Vissa WCF-funktioner som Reliable Messaging och SOAP-säkerhet på meddelandenivå förlitar sig på buffring av meddelanden för överföringar. Om du använder dessa funktioner kan du minska eller eliminera de prestandafördelar som uppnås med hjälp av strömning. Om du vill skydda en strömmad transport använder du endast säkerhet på transportnivå eller använder säkerhet i blandat läge, vilket kombinerar WS-Security anspråk med transportsäkerhet.
SOAP-huvuden buffrar alltid, även när överföringsläget är inställt på
Streamed. Rubrikerna för ett meddelande får inte överskrida storleken på MaxBufferSize-transportkvoten som exponeras för de olika bindningarna och bindningselementen.
Om du ändrar överföringsläget från Buffered till Streamed ändras även TCP:s inbyggda kanalform och namngivna rörtransporter. För buffrade överföringar är IDuplexSessionChannelden inbyggda kanalformen . För strömmade överföringar är IRequestChannel och IReplyChannel de interna kanalerna. En följd av detta är att sessionstjänstkontrakt inte kan användas med transportströmning.