Bagikan melalui


Gambaran Umum Sesi Andal

Windows Communication Foundation (WCF) SOAP olahpesan yang andal menyediakan keandalan transfer pesan end-to-end antara titik akhir SOAP. Ini dilakukan pada jaringan yang tidak dapat diandalkan dengan mengatasi kegagalan transportasi dan kegagalan tingkat pesan SOAP. Secara khusus, layanan ini menyediakan pengiriman pesanan berbasis sesi, tunggal, dan (opsional) untuk pesan yang dikirim melalui SOAP atau perantara transportasi. Pengiriman berbasis sesi menyediakan untuk mengelompokkan pesan dalam sesi dengan urutan pesan opsional.

Topik ini menjelaskan sesi yang andal, bagaimana dan kapan menggunakannya, dan cara mengamankannya.

Sesi yang dapat diandalkan WCF

Sesi andal WCF adalah implementasi olahpesan andal SOAP seperti yang didefinisikan oleh protokol WS-ReliableMessaging.

Olahpesan andal WCF SOAP menyediakan sesi andal end-to-end antara dua titik akhir, terlepas dari jumlah atau jenis perantara yang memisahkan titik akhir olahpesan. Ini termasuk perantara transportasi apa pun yang tidak menggunakan SOAP (misalnya, proksi HTTP) atau perantara yang menggunakan SOAP (misalnya, router atau jembatan berbasis SOAP) yang diperlukan agar pesan mengalir di antara titik akhir. Saluran sesi yang andal mendukung komunikasi interaktif sehingga layanan yang terhubung oleh saluran tersebut berjalan bersamaan dan bertukar dan memproses pesan dalam kondisi latensi rendah, yaitu, dalam interval waktu yang relatif singkat. Sambungan ini berarti bahwa komponen-komponen ini membuat kemajuan bersama-sama atau gagal bersama-sama, sehingga tidak ada isolasi yang disediakan di antara mereka.

Sesi yang andal menutupi dua jenis kegagalan:

  • Kegagalan tingkat pesan SOAP, yang mencakup pesan dan pesan yang hilang atau diduplikasi yang tiba dalam urutan yang berbeda dari urutan pengirimannya.

  • Kegagalan transportasi.

Sesi yang andal menerapkan protokol WS-ReliableMessaging dan jendela transfer dalam memori untuk menutupi kegagalan tingkat pesan SOAP dan membangun kembali koneksi jika terjadi kegagalan transportasi.

Sesi yang andal menyediakan pesan SOAP apa yang disediakan TCP untuk paket IP. Koneksi soket TCP menyediakan transfer paket IP tunggal dan berurutan antar node. Saluran yang andal menyediakan jenis transfer yang dapat diandalkan yang sama, tetapi berbeda dari keandalan soket TCP dengan cara berikut:

  • Keandalan berada di tingkat pesan SOAP, bukan untuk paket byte berukuran sewenang-wenang.

  • Keandalannya netral transportasi, bukan hanya untuk transfer melalui TCP.

  • Keandalan tidak terkait dengan sesi transportasi tertentu (misalnya, sesi yang disediakan koneksi TCP) dan dapat menggunakan beberapa sesi transportasi secara bersamaan atau berurutan selama masa pakai sesi yang dapat diandalkan.

  • Sesi yang dapat diandalkan adalah antara titik akhir SOAP pengirim dan penerima, terlepas dari jumlah koneksi transportasi yang diperlukan untuk konektivitas di antara mereka. Singkatnya, keandalan TCP berakhir di mana koneksi transportasi berakhir, sementara sesi yang andal memberikan keandalan end-to-end.

Sesi dan pengikatan yang andal

Seperti disebutkan sebelumnya, sesi yang dapat diandalkan netral transportasi. Selain itu, Anda dapat membuat sesi yang andal atas banyak pola pertukaran pesan, seperti balasan permintaan atau dupleks. Sesi yang dapat diandalkan WCF diekspos sebagai properti dari serangkaian pengikatan.

Gunakan sesi yang andal pada titik akhir yang menggunakan:

  • Pengikatan standar transportasi berbasis HTTP:

    • WsHttpBinding dan mengekspos permintaan-balasan atau kontrak satu arah.

    • Saat menggunakan sesi yang dapat diandalkan melalui kontrak layanan balasan permintaan atau satu arah sederhana.

    • WsDualHttpBinding dan mengekspos kontrak dupleks, balasan permintaan, atau satu arah.

    • WsFederationHttpBinding dan mengekspos permintaan-balasan atau kontrak satu arah.

  • Pengikatan standar transportasi berbasis TCP:

    • NetTcpBinding dan mengekspos dupleks, balasan permintaan, atau kontrak satu arah.

Gunakan sesi yang andal pada pengikatan lain dengan membuat pengikatan kustom, seperti HTTPS (untuk informasi selengkapnya tentang masalah, lihat Sesi dan keamanan yang andal) atau pengikatan pipa bernama.

Anda dapat menumpuk sesi yang andal pada berbagai jenis saluran yang mendasarinya, dan bentuk saluran sesi yang dapat diandalkan bervariasi. Pada klien dan server, jenis saluran sesi andal yang didukung tergantung pada jenis saluran yang mendasar yang digunakan. Tabel berikut mencantumkan jenis saluran sesi yang didukung pada klien sebagai fungsi dari jenis saluran yang mendasar.

Jenis saluran sesi yang andal yang didukung† IRequestChannel IRequestSessionChannel IDuplexChannel IDuplexSessionChannel
IOutputSessionChannel Ya Ya Ya Ya
IRequestSessionChannel Ya Ya No No
IDuplexSessionChannel No No Ya Ya

† Jenis saluran yang didukung adalah nilai yang tersedia untuk nilai parameter TChannel generik yang diteruskan ke metode BuildChannelFactory<TChannel>(BindingContext).

Tabel berikut mencantumkan jenis saluran sesi yang didukung di server sebagai fungsi dari jenis saluran yang mendasar.

Jenis saluran sesi yang andal yang didukung‡ IReplyChannel IReplySessionChannel IDuplexChannel IDuplexSessionChannel
IInputSessionChannel Ya Ya Ya Ya
IReplySessionChannel Ya Ya No No
IDuplexSessionChannel No No Ya Ya

‡Jenis saluran yang didukung adalah nilai yang tersedia untuk nilai parameter TChannel generik yang diteruskan ke metode BuildChannelListener<TChannel>(BindingContext).

Sesi dan keamanan yang andal

Mengamankan sesi yang andal penting untuk memastikan bahwa pihak yang berkomunikasi (layanan dan klien) diautentikasi dan bahwa pesan yang ditukar dalam sesi tidak diubah. Selain itu, penting untuk memastikan integritas setiap sesi yang dapat diandalkan individu. Sesi yang andal diamankan dengan mengikatnya ke konteks keamanan yang diwakili dan dikelola oleh saluran sesi keamanan. Saluran keamanan menyediakan sesi keamanan. Token keamanan yang dipertukarkan selama pembentukan sesi kemudian digunakan untuk mengamankan pesan dalam sesi yang dapat diandalkan.

Ketika sesi yang dapat diandalkan lebih dari TCP-S, sesi TCP terkait dengan sesi yang dapat diandalkan. Oleh karena itu, keamanan transportasi memastikan bahwa keamanan juga terkait dengan sesi yang dapat diandalkan. Dalam hal ini, pembentukan ulang koneksi dimatikan.

Satu-satunya pengecualian adalah ketika menggunakan HTTPS. Sesi Secure Sockets Layer (SSL) tidak terikat dengan sesi yang dapat diandalkan. Ini memberlakukan ancaman karena sesi yang berbagi konteks keamanan (sesi SSL) tidak dilindungi satu sama lain; ini mungkin atau mungkin bukan ancaman nyata tergantung pada aplikasi.

Menggunakan sesi yang andal

Untuk menggunakan sesi WCF yang andal, buat titik akhir dengan pengikatan yang mendukung sesi yang andal. Gunakan salah satu pengikatan yang disediakan sistem yang disediakan WCF dengan sesi yang andal diaktifkan atau buat pengikatan kustom Anda sendiri yang melakukan ini.

Pengikatan yang ditentukan sistem yang mendukung dan mengaktifkan sesi yang andal secara default meliputi:

Pengikatan yang disediakan sistem yang mendukung sesi yang andal sebagai opsi tetapi tidak mengaktifkannya secara default meliputi:

Untuk contoh cara membuat pengikatan kustom, lihat Cara: Membuat Pengikatan Sesi Andal Kustom dengan HTTPS.

Untuk diskusi tentang pengikatan WCF yang mendukung sesi yang andal, lihat Pengikatan yang Disediakan Sistem.

Kapan menggunakan sesi yang andal

Penting untuk dipahami kapan harus menggunakan sesi yang andal dalam aplikasi Anda. WCF mendukung sesi yang andal antara titik akhir yang aktif dan hidup secara bersamaan. Jika aplikasi Anda mengharuskan salah satu titik akhir tidak tersedia selama durasi waktu, gunakan antrean untuk mencapai keandalan.

Jika skenario memerlukan dua titik akhir yang terhubung melalui TCP, TCP mungkin cukup untuk memberikan pertukaran pesan yang andal. Meskipun, tidak perlu menggunakan sesi yang andal, karena TCP memastikan bahwa paket tiba secara berurutan dan hanya sekali.

Jika skenario Anda memiliki salah satu karakteristik berikut, maka Anda harus mempertimbangkan dengan serius menggunakan sesi yang dapat diandalkan.

  • Perantara SOAP, seperti router SOAP

  • Perantara proksi atau jembatan transportasi

  • Konektivitas terputus-putus

  • Sesi melalui HTTP

Lihat juga