Aracılığıyla paylaş


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

Name Değer Description
Buffered 0

İstek ve yanıt iletilerinin ikisi de arabelleğe alınıyor.

Streamed 1

İstek ve yanıt iletilerinin her ikisi de akışla sağlanır.

StreamedRequest 2

İstek iletisi akışı yapılır ve yanıt iletisi arabelleğe eklenir.

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ı, iletilerin her yönde aktarılması için iki modu 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 aynı anda okunabileceği bir akış olarak kullanıma sunar.

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

Akışlı aktarımlar, büyük bellek arabellekleri gereksinimini ortadan kaldırarak hizmetin ölçeklenebilirliğini geliştirebilir. Aktarım modunun değiştirilmesinin pratikte ölçeklenebilirliği geliştirip geliştirmediği, aktarılmakta olan iletilerin boyutuna bağlıdır. Ölçeklenebilirlik geliştirmeleri, büyük iletiler arabelleğe alınan aktarımlar yerine akışlı olarak kullanıldığında daha belirgin olmalıdır.

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ışlı 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ı veya 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 taşıma yöntemleri için, aktarım modu bir politika onayı olarak aktarı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şlemlerin programlama modeli katmanında en fazla bir giriş ve/veya bir çıkış parametresiyle bir sözleşmesi olabilir. Bu parametre iletinin tüm gövdesine karşılık gelir ve bir Messagealt 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 iletileri arabelleğe almayı 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ğini kullanın veya WS-Security talepleri aktarım güvenliğiyle birleştiren karma mod güvenliği kullanın.

  • AKTARıM modu olarak ayarlandığında Streamedbile SOAP üst bilgileri 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'nin 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 IRequestChannel ve IReplyChannel şeklindedir. Bunun bir sonucu, oturumlu hizmet sözleşmelerinin aktarım akışıyla kullanılamayacağıdır.

Şunlara uygulanır