TransferMode Sabit listesi

Tanım

Kanalın istek ve yanıt iletilerinin aktarımı için akışlı veya arabelleğe alınan modları kullanıp kullanmadığını gösterir.

public enum class TransferMode
public enum TransferMode
type TransferMode = 
Public Enum TransferMode
Devralma
TransferMode

Alanlar

Buffered 0

İstek ve yanıt iletilerinin ikisi de arabelleğe alınmaktadır.

Streamed 1

İstek ve yanıt iletilerinin ikisi de akışla aktarılır.

StreamedRequest 2

İstek iletisi akışı yapılır ve yanıt iletisi arabelleğe alınıp alınıp gönderilmez.

StreamedResponse 3

İstek iletisi arabelleğe alınıp yanıt iletisi akışı yapılır.

Örnekler

Aşağıdaki örnek , kod aracılığıyla TcpTransportBindingElement.TransferMode özelliğini olarak Streamed ayarlar:

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

Aşağıdaki örnek, yapılandırma aracılığıyla TcpTransportBindingElement.TransferMode özelliğini olarak Streamed ayarlar:

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

Açıklamalar

Windows Communication Foundation (WCF) aktarımları, iletileri her yönde aktarmanın iki modunu destekler:

  • Arabelleğe alınan aktarımlar, aktarım tamamlanana kadar iletinin tamamını bellek arabelleğinde tutar.

  • Akışlı aktarımlar yalnızca ileti üst bilgilerini arabelleğe alır ve ileti gövdesini, küçük bölümlerin bir kerede okunabileceği bir akış olarak kullanıma sunar.

Aktarım modunu olarak Streamed ayarlamak, akış iletişimini her iki yönde de etkinleştirir. Aktarım modunun StreamedRequest olarak ayarlanması veya StreamedResponse akış iletişiminin yalnızca belirtilen yönde olmasını sağlar.

Akışlı aktarımlar, büyük bellek arabellekleri gereksinimini ortadan kaldırarak hizmetin ölçeklenebilirliğini artırabilir. Aktarım modunun değiştirilmesinin gerçekte ölçeklenebilirliği geliştirip geliştirmediği, aktarılmakta olan iletilerin boyutuna bağlıdır. Büyük iletiler arabelleğe alınan aktarımlar yerine akışla aktarıldığında ölçeklenebilirlik geliştirmeleri en belirgin şekilde görülmelidir.

Varsayılan olarak, HTTP, TCP/IP ve adlandırılmış kanal aktarımları arabelleğe alınan ileti aktarımlarını kullanır. üzerinde kullanıma sunulan aktarım modu özelliklerini kullanarak , NetTcpBindingve NetNamedPipeBinding sistem tarafından sağlanan bağlamalarda değerlerini TransferModeBasicHttpBindingayarlayabilirsiniz. Mod, örneğin özelliği kullanılarak NetTcpBinding.TransferMode sınıfında ayarlanabilirNetTcpBinding. Bağlamanın yapılandırma bölümünde de ayarlanabilir.

Aktarım modu özelliğini kullanıma sunmayan bağlamalar için aktarım modu aktarım bağlama öğesinde ayarlanabilir ve bu öğe daha sonra özel bağlamaya eklenebilir. Örneğin, özel bağlama oluştururken aktarım modunu ayarlamak için bir HttpTransportBindingElement oluşturun ve özelliğini kullanın TransferMode . Aktarım modu, özel bağlamanın yapılandırma bölümünde de ayarlanabilir.

Arabelleğe alınan veya akışı yapılan aktarımları kullanma kararı, HTTP aktarımları için uç noktanın yerel bir kararıdır. HTTP aktarımları için aktarım modu bir bağlantı arasında ya da ara sunuculara ya da diğer aracılara yayılmaz. Aktarım modunun ayarlanması, hizmet sözleşmesinin açıklamasına yansıtılmaz. Bir hizmete ara sunucu oluşturduktan sonra aktarım modunu ayarlamak için akışlı aktarımlarla kullanılması amaçlanan hizmetler için yapılandırma dosyasını düzenleyebilirsiniz (izin verilir, ancak gerekli değildir). TCP ve adlandırılmış kanal aktarımları için aktarım modu bir ilke onayı olarak yayılır.

Aktarım modunun Streamed kullanılması WCF çalışma zamanının bazı kısıtlamaları zorlamasına neden olur.

  • Akışlı aktarımda gerçekleşen işlemler, programlama modeli katmanında en fazla bir giriş ve/veya bir çıkış parametresiyle bir sözleşmeye sahip olabilir. Bu parametre iletinin tüm gövdesine karşılık gelir ve bir Messageolmalıdır, alt türü Streamolmalıdır veya arabirimini IXmlSerializable uygulamalıdır. bir işlem için dönüş değerinin olması, çıkış parametresine sahip olmakla eşdeğerdir.

  • Reliable Messaging ve SOAP ileti düzeyi güvenlik gibi bazı WCF özellikleri, iletimler için arabelleğe alınan iletileri kullanır. Bu özelliklerin kullanılması, akışı kullanarak elde edilen performans avantajlarını azaltabilir veya ortadan kaldırabilir. Akışlı aktarım güvenliğini sağlamak için yalnızca aktarım düzeyi güvenliği kullanın veya WS-Security talepleri aktarım güvenliğiyle birleştiren karma mod güvenliği kullanın.

  • SOAP üst bilgileri, aktarım modu olarak ayarlandığında Streamedbile her zaman arabelleğe alınır. bir iletinin üst bilgileri, çeşitli bağlamalarda ve bağlama öğelerinde gösterilen MaxBufferSize aktarım kotasının boyutunu aşmamalıdır.

Aktarım modunun BufferedStreamed olarak değiştirilmesi, TCP ve adlandırılmış kanal aktarımlarının yerel kanal şeklini de değiştirir. Arabelleğe alınan aktarımlar için yerel kanal şekli şeklindedir IDuplexSessionChannel. Akışlı aktarımlar için yerel kanallar ve IReplyChannelşeklindedirIRequestChannel. Bunun bir sonucu, oturumlu hizmet sözleşmelerinin aktarım akışıyla kullanılamayacağıdır.

Şunlara uygulanır