Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Transportasi berorientasi aliran seperti TCP dan Pipa Bernama beroperasi pada aliran byte berkelanjutan antara klien dan server. Aliran ini diwujudkan oleh Stream objek. Dalam peningkatan aliran, klien ingin menambahkan lapisan protokol opsional ke tumpukan saluran, dan meminta ujung lain saluran komunikasi untuk melakukannya. Peningkatan aliran terdiri dari mengganti objek asli Stream dengan yang ditingkatkan.
Misalnya, Anda dapat membangun aliran kompresi langsung di atas aliran transportasi. Dalam hal ini transportasi Stream asli diganti dengan yang membungkus kompresi Stream di sekitar yang asli.
Anda dapat menerapkan beberapa peningkatan aliran, masing-masing membungkus yang sebelumnya.
Cara Kerja Peningkatan Aliran
Ada empat komponen untuk proses peningkatan aliran.
Inisiator aliran peningkatan memulai proses: pada runtime dapat memulai permintaan ke ujung lain koneksinya untuk meningkatkan lapisan transportasi saluran.
Acceptor stream peningkatan melakukan peningkatan: saat waktu jalan menerima permintaan peningkatan dari mesin lain, dan jika memungkinkan, mengakomodasi peningkatan tersebut.
Penyedia peningkatan membuat Inisiator pada klien dan Penerima pada server.
Elemen Pengikatan peningkatan aliran ditambahkan ke pengikatan pada layanan dan klien, dan membuat penyedia saat runtime.
Perhatikan bahwa dalam kasus beberapa peningkatan, Inisiator dan Penerima merangkum mesin status untuk menentukan transisi peningkatan yang berlaku dalam setiap inisiasi.
Cara Menerapkan Peningkatan Aliran
Windows Communication Foundation (WCF) menyediakan empat abstract kelas yang dapat Anda terapkan:
Untuk menerapkan peningkatan aliran kustom, lakukan hal berikut. Prosedur ini menerapkan proses peningkatan aliran minimal pada komputer klien dan server.
Buat kelas yang mengimplementasikan StreamUpgradeInitiator.
Override metode InitiateUpgrade untuk menerima aliran yang akan ditingkatkan, dan kembalikan aliran yang ditingkatkan. Metode ini bekerja secara sinkron; ada metode analog untuk memulai peningkatan secara asinkron.
Timpa metode GetNextUpgrade untuk memeriksa peningkatan tambahan.
Buat kelas yang mengimplementasikan StreamUpgradeAcceptor.
Override metode AcceptUpgrade untuk menerima aliran yang akan ditingkatkan, dan kembalikan aliran yang ditingkatkan. Metode ini bekerja secara sinkron; ada metode analog untuk menerima peningkatan secara asinkron.
Timpa metode CanUpgrade untuk menentukan apakah peningkatan yang diminta didukung oleh penerima peningkatan ini pada tahap ini dalam proses peningkatan.
Buat kelas yang mengimplementasikan StreamUpgradeProvider. Ambil alih CreateUpgradeAcceptor dan CreateUpgradeInitiator metode untuk mengembalikan instans penerima dan inisiator yang ditentukan dalam langkah 2 dan 1.
Buat kelas yang mengimplementasikan StreamUpgradeBindingElement.
Ambil alih BuildClientStreamUpgradeProvider metode pada klien dan BuildServerStreamUpgradeProvider metode pada layanan.
Timpa metode BuildChannelFactory pada klien dan metode BuildChannelListener pada layanan untuk menambahkan elemen pengikatan peningkatan ke BindingParameters.
Tambahkan elemen pengikatan peningkatan aliran baru ke pengikatan di server dan komputer klien.
Peningkatan Keamanan
Menambahkan peningkatan keamanan adalah versi khusus dari proses peningkatan aliran umum.
WCF sudah menyediakan dua elemen pengikatan untuk meningkatkan keamanan aliran. Konfigurasi keamanan tingkat transportasi dienkapsulasi oleh WindowsStreamSecurityBindingElement dan SslStreamSecurityBindingElement yang dapat dikonfigurasi dan ditambahkan ke pengikatan kustom. Elemen pengikatan ini memperluas StreamUpgradeBindingElement kelas yang membangun penyedia pembaruan aliran untuk klien dan server. Elemen pengikatan ini memiliki metode yang membuat kelas penyedia peningkatan aliran keamanan khusus, yang bukan public, jadi untuk dua kasus ini yang perlu Anda lakukan adalah menambahkan elemen pengikatan ke pengikatan.
Untuk skenario keamanan yang tidak dipenuhi oleh dua elemen pengikatan di atas, tiga kelas terkait abstract keamanan berasal dari kelas dasar inisiator, penerima, dan penyedia di atas:
Proses penerapan peningkatan aliran keamanan sama seperti sebelumnya, dengan perbedaan yang akan Anda dapatkan dari ketiga kelas ini. Ambil alih properti tambahan di kelas ini untuk menyediakan informasi keamanan ke runtime.
Beberapa Peningkatan
Untuk membuat permintaan peningkatan tambahan, ulangi proses di atas: buat ekstensi tambahan dan elemen pengikatan dari StreamUpgradeProvider. Tambahkan elemen pengikat ke dalam pengikatan. Elemen pengikatan tambahan diproses secara berurutan, dimulai dengan elemen pengikatan pertama yang ditambahkan ke pengikatan. Di BuildChannelFactory dan BuildChannelListener, setiap penyedia upgrade dapat menentukan cara mengintegrasikan diri pada parameter pengikatan upgrade yang sudah ada sebelumnya. Kemudian perlu mengganti parameter pengikatan peningkatan saat ini dengan parameter pengikatan peningkatan komposit yang baru.
Atau, satu penyedia peningkatan dapat mendukung beberapa peningkatan. Misalnya, Anda mungkin ingin menerapkan penyedia peningkatan aliran kustom yang mendukung keamanan dan pemadatan. Lakukan langkah-langkah berikut:
Subkelas StreamSecurityUpgradeProvider untuk menulis kelas penyedia yang membuat Inisiator dan Penerima.
Buat subclass dari StreamSecurityUpgradeInitiator dan pastikan untuk menimpa metode GetNextUpgrade agar mengembalikan jenis konten dari aliran kompresi dan aliran aman secara berurutan.
Subkelas StreamSecurityUpgradeAcceptor yang memahami jenis konten kustom dalam metodenya CanUpgrade .
Aliran akan ditingkatkan setelah setiap panggilan ke GetNextUpgrade dan CanUpgrade.