Bagikan melalui


Ringkasan Model Saluran

Tumpukan saluran Windows Communication Foundation (WCF) adalah tumpukan komunikasi berlapis dengan satu atau beberapa saluran yang memproses pesan. Di bagian bawah tumpukan adalah saluran transportasi yang bertanggung jawab untuk mengadaptasi tumpukan saluran ke transportasi yang mendasarinya (misalnya, TCP, HTTP, SMTP, dan jenis transportasi lainnya.). Saluran menyediakan model pemrograman tingkat rendah untuk mengirim dan menerima pesan. Model pemrograman ini bergantung pada beberapa antarmuka dan jenis lain yang secara kolektif dikenal sebagai model saluran WCF. Topik ini membahas bentuk saluran, konstruksi pendengar saluran dasar (pada layanan) dan pabrik saluran (pada klien).

Tumpukan Saluran

Titik akhir WCF berkomunikasi dengan dunia menggunakan tumpukan komunikasi yang disebut tumpukan saluran. Diagram berikut membandingkan tumpukan saluran dengan tumpukan komunikasi lainnya, misalnya TCP/IP.

Channel Model

Pertama, persamaannya: Dalam kedua kasus, setiap lapisan tumpukan menyediakan beberapa abstraksi dunia di bawah lapisan itu dan mengekspos abstraksi itu hanya ke lapisan langsung di atasnya. Setiap lapisan menggunakan abstraksi hanya pada lapisan langsung di bawahnya. Juga dalam kedua kasus tersebut, ketika dua tumpukan berkomunikasi, setiap lapisan berkomunikasi dengan lapisan yang sesuai jenisnya di tumpukan lain, misalnya, lapisan IP berkomunikasi dengan lapisan IP dan lapisan TCP dengan lapisan TCP, dan seterusnya.

Saat ini, perbedaannya: Meskipun tumpukan TCP dirancang untuk memberikan abstraksi dari jaringan fisik, tumpukan saluran dirancang untuk memberikan abstraksi tidak hanya cara pesan disampaikan, yaitu transportasi, tetapi juga fitur lain seperti hal yang ada dalam pesan atau jenis protokol yang digunakan untuk komunikasi, termasuk transportasi tetapi lebih dari informasi itu. Misalnya, elemen pengikat sesi yang andal adalah bagian dari tumpukan saluran tetapi tidak berada di bawah transportasi atau transportasi itu sendiri. Abstraksi ini dicapai dengan mengharuskan saluran bagian bawah dalam tumpukan untuk mengadaptasi protokol transportasi yang mendasarinya ke arsitektur tumpukan saluran kemudian mengandalkan saluran lebih jauh di tumpukan untuk menyediakan fitur komunikasi seperti jaminan keandalan dan keamanan.

Pesan mengalir melalui tumpukan komunikasi sebagai objek Message. Seperti yang ditunjukkan pada gambar di atas, saluran bagian bawah disebut saluran transportasi. Saluran ini adalah saluran yang bertanggung jawab untuk mengirim dan menerima pesan ke dan dari pihak lain. Cara ini termasuk tanggung jawab untuk mengubah objek Message ke dan dari format yang digunakan untuk berkomunikasi dengan pihak lain. Di atas saluran transportasi terdapat sejumlah saluran protokol yang masing-masing dari saluran tersebut bertanggung jawab untuk menyediakan fungsi komunikasi seperti jaminan pengiriman yang andal. Saluran protokol beroperasi pada pesan yang mengalir melaluinya dalam bentuk objek Message. Saluran biasanya mengubah pesan, misalnya dengan menambahkan header atau mengenkripsi isi, atau mengirim dan menerima pesan kontrol protokol mereka sendiri, misalnya pengakuan tanda terima.

Bentuk Saluran

Setiap saluran mengimplementasikan satu atau beberapa antarmuka yang dikenal sebagai antarmuka bentuk saluran atau bentuk saluran. Bentuk saluran tersebut menyediakan metode berorientasi komunikasi seperti mengirim dan menerima atau meminta dan membalas yang diterapkan saluran dan pengguna panggilan saluran. Di bagian dasar bentuk saluran terdapat antarmuka IChannel, yang merupakan antarmuka yang menyediakan metode GetProperty<T> yang dimaksudkan sebagai mekanisme berlapis untuk mengakses fitur arbitrer yang diekspos oleh saluran dalam tumpukan. Lima bentuk saluran yang memanjangkan IChannel adalah:

Selanjutnya, masing-masing bentuk ini memiliki padanan yang meluas System.ServiceModel.Channels.ISessionChannel<TSession> ke sesi dukungan. Ini adalah:

Bentuk saluran dipolakan setelah beberapa pola pertukaran pesan mendasar yang didukung oleh protokol transportasi yang ada. Misalnya, pesan satu arah menyesuaikan dengan pasangan IInputChannel/IOutputChannel, permintaan-balasan sesuai dengan pasangan IRequestChannel/IReplyChannel dan komunikasi dupleks dua arah sesuai dengan IDuplexChannel (yang meluas IInputChannel dan IOutputChannel).

Pemrograman dengan Tumpukan Saluran

Tumpukan saluran biasanya dibuat menggunakan pola pabrik ketika pengikatan membuat tumpukan saluran. Di sisi pengiriman, pengikatan digunakan untuk membuat ChannelFactory, yang selanjutnya membangun tumpukan saluran dan mengembalikan referensi ke saluran teratas di tumpukan. Aplikasi kemudian dapat menggunakan saluran ini untuk mengirim pesan. Untuk informasi selengkapnya, baca Pemrograman Tingkat Saluran Klien.

Di sisi penerima, pengikatan digunakan untuk membuat IChannelListener, yang mendengarkan pesan masuk. IChannelListener memberikan pesan ke aplikasi pendengar dengan membuat tumpukan saluran dan menyerahkan referensi aplikasi ke saluran teratas. Aplikasi kemudian menggunakan saluran ini untuk menerima pesan masuk. Untuk informasi selengkapnya, baca Pemrograman Tingkat Saluran Layanan.

Model Obyek Saluran

Model objek saluran adalah rangkaian inti antarmuka yang diperlukan untuk mengimplementasikan saluran, pendengar saluran, dan pabrik saluran. Ada juga beberapa kelas dasar yang disediakan untuk membantu dalam implementasi kustom.

Pendengar saluran bertanggung jawab untuk mendengarkan pesan yang masuk, kemudian mengirimkannya ke lapisan di atas melalui saluran yang dibuat oleh pendengar saluran.

Pabrik saluran bertanggung jawab untuk membuat saluran yang digunakan untuk mengirim pesan dan untuk menutup semua saluran yang mereka buat saat pabrik saluran ditutup.

ICommunicationObject adalah antarmuka inti yang mendefinisikan mesin keadaan dasar yang diterapkan oleh semua objek komunikasi. CommunicationObject menyediakan implementasi antarmuka inti ini yang dapat diturunkan dari kelas saluran lain daripada mengimplementasikan ulang antarmuka. Namun, tindakan ini tidak diperlukan: saluran khusus dapat menerapkan ICommunicationObject secara langsung dan tidak mewarisi dari CommunicationObject. Tak satu pun dari kelas pada Gambar 3 dianggap sebagai bagian dari model saluran; kelas tersebut adalah pembantu yang tersedia bagi pelaksana saluran khusus yang ingin membangun saluran.

Channel model

Topik berikut menjelaskan model objek saluran serta berbagai area pengembangan yang membantu membangun saluran kustom.

Topik Deskripsi
Layanan: Pendengar Saluran dan Saluran Menjelaskan pendengar saluran, yang mendengarkan saluran masuk dalam aplikasi layanan.
Klien: Pabrik Saluran dan Saluran Menjelaskan pabrik saluran, yang membuat saluran untuk terhubung ke aplikasi layanan.
Memahami Perubahan Status Menjelaskan cara model antarmuka System.ServiceModel.ICommunicationObject menyatakan perubahan di saluran.
Memilih Pola Pertukaran Pesan Menjelaskan enam pola pertukaran pesan dasar yang dapat didukung oleh saluran.
Menangani Pengecualian dan Kesalahan Menjelaskan cara menangani kesalahan dan pengecualian di saluran kustom.
Dukungan Metadata dan Konfigurasi Menjelaskan cara mendukung penggunaan saluran khusus dari model aplikasi dan cara mengekspor dan mengimpor metadata menggunakan elemen pengikatan dan pengikatan.