TransferMode Enum
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Menunjukkan apakah saluran menggunakan mode streaming atau buffer untuk transfer pesan permintaan dan respons.
public enum class TransferMode
public enum TransferMode
type TransferMode =
Public Enum TransferMode
- Warisan
Bidang
| Nama | Nilai | Deskripsi |
|---|---|---|
| Buffered | 0 | Pesan permintaan dan respons keduanya di-buffer. |
| Streamed | 1 | Pesan permintaan dan respons keduanya dialirkan. |
| StreamedRequest | 2 | Pesan permintaan dialirkan dan pesan respons di-buffer. |
| StreamedResponse | 3 | Pesan permintaan di-buffer dan pesan respons dialirkan. |
Contoh
Contoh berikut mengatur properti TcpTransportBindingElement.TransferMode ke Streamed melalui kode:
TcpTransportBindingElement transport = new TcpTransportBindingElement();
transport.TransferMode = TransferMode.Streamed;
BinaryMessageEncodingBindingElement encoder = new BinaryMessageEncodingBindingElement();
CustomBinding binding = new CustomBinding(encoder, transport);
Contoh berikut mengatur properti TcpTransportBindingElement.TransferMode ke Streamed melalui konfigurasi:
<customBinding>
<binding name="streamingBinding">
<binaryMessageEncoding />
<tcpTransport transferMode="Streamed" />
</binding>
</customBinding>
Keterangan
Transportasi Windows Communication Foundation (WCF) mendukung dua mode transfer pesan di setiap arah:
Transfer yang di-buffer mempertahankan seluruh pesan dalam buffer memori hingga transfer selesai.
Transfer yang dialirkan hanya buffer header pesan dan mengekspos isi pesan sebagai aliran, dari mana bagian yang lebih kecil dapat dibaca pada satu waktu.
Jika mode transfer di atur ke Streamed, komunikasi dapat dialirkan di kedua arah. Mengatur mode transfer ke StreamedRequest atau StreamedResponse mengaktifkan komunikasi streaming hanya ke arah yang ditunjukkan.
Transfer yang dialirkan dapat meningkatkan skalabilitas layanan dengan menghilangkan kebutuhan akan buffer memori besar. Apakah mengubah mode transfer benar-benar meningkatkan skalabilitas dalam praktik tergantung pada ukuran pesan yang ditransfer. Peningkatan skalabilitas harus paling jelas ketika pesan besar menggunakan streaming alih-alih transfer yang di-buffer.
Secara default, HTTP, TCP/IP, dan transportasi pipa bernama menggunakan transfer pesan yang di-buffer. Anda dapat mengatur nilai TransferMode pada BasicHttpBindingpengikatan , NetTcpBinding, dan NetNamedPipeBinding yang disediakan sistem menggunakan properti mode transfer yang diekspos pada mereka. Mode dapat diatur pada NetTcpBinding kelas, misalnya, dengan menggunakan NetTcpBinding.TransferMode properti . Ini juga dapat diatur di bagian konfigurasi untuk pengikatan.
Untuk pengikatan yang tidak mengekspos properti mode transfer, mode transfer dapat diatur pada elemen pengikatan transportasi dan elemen ini kemudian dapat ditambahkan ke pengikatan kustom. Misalnya, buat HttpTransportBindingElement dan gunakan TransferMode properti untuk mengatur mode transfer saat membuat pengikatan kustom. Mode transfer juga dapat diatur di bagian konfigurasi untuk pengikatan kustom.
Keputusan untuk menggunakan transfer yang di-buffer atau di-streaming adalah keputusan lokal dari titik akhir untuk transportasi HTTP. Untuk transportasi HTTP, mode transfer tidak menyebar di seluruh koneksi, atau ke server proksi atau perantara lainnya. Mengatur mode transfer tidak tercermin dalam deskripsi kontrak layanan. Setelah membuat proksi ke layanan, Anda dapat (diizinkan tetapi tidak diperlukan) mengedit file konfigurasi untuk layanan yang dimaksudkan untuk digunakan dengan transfer yang dialirkan untuk mengatur mode transfer. Untuk transportasi pipa yang dinamai dan TCP, mode transfer disebarkan sebagai penegasan kebijakan.
Streamed Menggunakan mode transfer menyebabkan runtime WCF memberlakukan beberapa batasan.
Operasi yang terjadi di seluruh transportasi yang dialirkan dapat memiliki kontrak dengan paling banyak satu parameter input dan/atau satu output di lapisan model pemrograman. Parameter tersebut sesuai dengan seluruh isi pesan dan harus berupa Message, menjadi subjenis Stream, atau terapkan IXmlSerializable antarmuka. Memiliki nilai pengembalian untuk operasi setara dengan memiliki parameter output.
Beberapa fitur WCF seperti Reliable Messaging dan keamanan tingkat pesan SOAP mengandalkan pesan buffering untuk transmisi. Menggunakan fitur-fitur ini dapat mengurangi atau menghilangkan manfaat performa yang diperoleh dengan menggunakan streaming. Untuk mengamankan transportasi yang dialirkan, gunakan keamanan tingkat transportasi saja atau gunakan keamanan mode campuran, yang menggabungkan klaim WS-Security dengan keamanan transportasi.
Header SOAP selalu di-buffer, bahkan ketika mode transfer diatur ke
Streamed. Header untuk pesan tidak boleh melebihi ukuran kuota transportasi MaxBufferSize yang diekspos pada berbagai pengikatan dan elemen pengikatan.
Mengubah mode transfer dari Buffered menjadi Streamed juga mengubah bentuk saluran asli TCP dan transportasi pipa bernama. Untuk transfer yang di-buffer, bentuk saluran native-nya adalah IDuplexSessionChannel. Untuk transfer yang dialirkan, saluran aslinya adalah IRequestChannel dan IReplyChannel. Konsekuensi dari ini adalah bahwa kontrak layanan sesi tidak dapat digunakan dengan streaming transportasi.