Layanan Perutean
Layanan Perutean adalah perantara SOAP generik yang bertindak sebagai router pesan. Fungsionalitas inti dari Layanan Perutean adalah kemampuan untuk merutekan pesan berdasarkan konten pesan, yang memungkinkan pesan diteruskan ke titik akhir klien berdasarkan nilai dalam pesan itu sendiri, baik di header atau isi pesan.
RoutingService diimplementasikan sebagai layanan Windows Communication Foundation (WCF) di namespace layanan System.ServiceModel.Routing. Layanan Perutean mengekspos satu atau beberapa titik akhir layanan yang menerima pesan lalu merutekan setiap pesan ke satu atau beberapa titik akhir klien berdasarkan konten pesan. Layanan menyediakan fitur-fitur berikut:
Perutean berbasis konten
Agregasi layanan
Penerapan Versi Layanan
Perutean prioritas
Konfigurasi dinamis
Bridging protokol
Pemrosesan SOAP
Penanganan kesalahan tingkat lanjut
Titik Akhir Backup
Meskipun dimungkinkan untuk membuat layanan perantara yang mencapai satu atau beberapa tujuan ini, sering kali implementasi tersebut terikat dengan skenario atau solusi tertentu dan tidak dapat dengan mudah diterapkan ke aplikasi baru.
Layanan Perutean menyediakan perantara SOAP generik, yang dapat dikonfigurasi secara dinamis, dan dapat dicolokkan yang kompatibel dengan model Layanan dan Saluran WCF dan memungkinkan Anda melakukan perutean berbasis konten pesan berbasis SOAP.
Catatan
Layanan Perutean saat ini tidak mendukung perutean layanan WCF REST. Untuk merutekan panggilan REST, pertimbangkan untuk menggunakan System.Web.Routing atau Perutean Permintaan Aplikasi.
Perutean Berbasis Konten
Perutean berbasis konten adalah kemampuan untuk merutekan pesan berdasarkan satu atau beberapa nilai yang terkandung dalam pesan. Layanan Perutean memeriksa setiap pesan dan merutekannya ke titik akhir tujuan berdasarkan konten pesan dan logika perutean yang Anda buat. Perutean berbasis konten memberikan dasar untuk agregasi layanan, penerapan versi layanan, dan perutean prioritas.
Untuk menerapkan perutean berbasis konten, Layanan Perutean bergantung pada implementasi MessageFilter yang digunakan untuk mencocokkan nilai tertentu dalam pesan yang akan dirutekan. Jika MessageFilter cocok dengan pesan, pesan dirutekan ke titik akhir tujuan yang terkait dengan MessageFilter. Filter pesan dikelompokkan bersama ke dalam tabel filter (FilterTableCollection) untuk membangun logika perutean yang kompleks. Misalnya, tabel filter mungkin berisi lima filter pesan yang saling eksklusif yang menyebabkan pesan dirutekan hanya ke salah satu dari lima titik akhir tujuan.
Layanan Perutean memungkinkan Anda mengonfigurasi logika yang digunakan untuk melakukan perutean berbasis konten, serta memperbarui logika perutean secara dinamis pada durasi.
Melalui pengelompokan filter pesan ke dalam tabel filter, logika perutean dapat dibangun yang memungkinkan Anda menangani beberapa skenario perutean seperti:
Agregasi layanan
Penerapan Versi Layanan
Perutean prioritas
Konfigurasi dinamis
Untuk informasi selengkapnya tentang filter pesan dan tabel filter, lihat Pengenalan Perutean dan Filter Pesan.
Agregasi Layanan
Dengan menggunakan perutean berbasis konten, Anda dapat mengekspos satu titik akhir yang menerima pesan dari aplikasi klien eksternal lalu merutekan setiap pesan ke titik akhir internal yang sesuai berdasarkan nilai dalam pesan. Ini berguna untuk menawarkan satu titik akhir tertentu untuk berbagai aplikasi back-end, dan juga untuk menyajikan satu titik akhir aplikasi kepada pelanggan sambil memperhitungkan aplikasi Anda ke dalam berbagai layanan.
Penerapan Versi Layanan
Saat bermigrasi ke versi baru solusi Anda, Anda mungkin harus mempertahankan versi lama secara paralel untuk melayani pelanggan yang ada. Sering kali ini mengharuskan klien yang terhubung ke versi yang lebih baru harus menggunakan alamat yang berbeda saat berkomunikasi dengan solusi. Layanan Perutean memungkinkan Anda mengekspos satu titik akhir layanan yang melayani kedua versi solusi Anda dengan merutekan pesan ke solusi yang sesuai berdasarkan informasi khusus versi yang terkandung dalam pesan. Untuk contoh implementasi tersebut, lihat Cara: Menerapkan Versi Layanan.
Perutean Prioritas
Saat menyediakan layanan untuk beberapa klien, Anda mungkin memiliki perjanjian tingkat layanan (SLA) dengan beberapa mitra yang mengharuskan semua data dari mitra ini diproses secara terpisah dari klien lain. Dengan menggunakan filter yang mencari informasi khusus pelanggan yang terkandung dalam pesan, Anda dapat dengan mudah merutekan pesan dari mitra tertentu ke titik akhir yang telah dibuat untuk memenuhi persyaratan SLA mereka.
Konfigurasi Dinamis
Untuk mendukung sistem misi penting, di mana pesan harus diproses tanpa gangguan layanan, sangat penting bahwa Anda dapat memodifikasi konfigurasi komponen dalam sistem pada durasi. Untuk mendukung kebutuhan ini, Layanan Perutean menyediakan implementasi IExtension<T>, RoutingExtension, yang memungkinkan pembaruan dinamis konfigurasi Layanan Perutean pada durasi.
Untuk informasi selengkapnya tentang konfigurasi dinamis Layanan Perutean, lihat Pengantar Perutean.
Bridging Protokol
Salah satu tantangan dalam skenario perantara adalah bahwa titik akhir internal mungkin memiliki persyaratan transportasi atau versi SOAP yang berbeda dari titik akhir tempat pesan diterima. Untuk mendukung skenario ini, Layanan Perutean dapat menjembatani protokol, termasuk memproses pesan SOAP ke MessageVersion yang diperlukan oleh titik akhir tujuan. Dengan cara ini, satu protokol dapat digunakan untuk komunikasi internal, sementara yang lain dapat digunakan untuk komunikasi eksternal.
Untuk mendukung perutean pesan antar titik akhir dengan transportasi yang berbeda, Layanan Perutean menggunakan pengikatan yang disediakan sistem yang memungkinkan layanan untuk menjembatani protokol yang berbeda. Ini terjadi secara otomatis ketika titik akhir layanan yang diekspos oleh Layanan Perutean menggunakan protokol yang berbeda dari titik akhir klien tempat pesan dirutekan.
Pemrosesan SOAP
Persyaratan perutean umum adalah kemampuan untuk merutekan pesan antar titik akhir dengan persyaratan SOAP yang berbeda. Untuk mendukung persyaratan ini, Layanan Perutean menyediakan SoapProcessingBehavior yang secara otomatis membuat MessageVersion baru yang memenuhi persyaratan titik akhir tujuan sebelum pesan dirutekan ke dalamnya. Perilaku ini juga membuat MessageVersion baru untuk pesan respons apa pun sebelum mengembalikannya ke aplikasi klien yang meminta, untuk memastikan bahwa MessageVersion respons cocok dengan permintaan asli.
Untuk informasi selengkapnya tentang pemrosesan SOAP, lihat Pengantar Perutean.
Penanganan Kesalahan
Dalam sistem yang terdiri dari layanan terdistribusi yang mengandalkan komunikasi jaringan, penting untuk memastikan bahwa komunikasi dalam sistem Anda tahan terhadap kegagalan jaringan sementara. Layanan Perutean menerapkan penanganan kesalahan yang memungkinkan Anda menangani banyak skenario kegagalan komunikasi yang mungkin mengakibatkan pemadaman layanan.
Jika Layanan Perutean mengalami CommunicationException saat mencoba mengirim pesan, penanganan kesalahan akan terjadi. Pengecualian ini biasanya menunjukkan bahwa masalah terjadi saat mencoba berkomunikasi dengan titik akhir klien yang ditentukan, seperti EndpointNotFoundException, ServerTooBusyException, atau CommunicationObjectFaultedException. Kode penanganan kesalahan juga akan menangkap dan mencoba kembali pengiriman ketika TimeoutExceptionterjadi, yang merupakan pengecualian umum lain yang tidak berasal dari CommunicationException.
Untuk informasi selengkapnya tentang penanganan kesalahan, lihat Pengantar Perutean.
Titik Akhir Pencadangan
Selain titik akhir klien tujuan yang terkait dengan setiap definisi filter dalam tabel filter, Anda juga dapat membuat daftar titik akhir cadangan tempat pesan akan dirutekan jika terjadi kegagalan transmisi. Jika terjadi kesalahan dan daftar cadangan ditentukan untuk entri filter, Layanan Perutean akan mencoba mengirim pesan ke titik akhir pertama yang ditentukan dalam daftar. Jika upaya transmisi ini gagal, layanan akan mencoba titik akhir berikutnya, dan melanjutkan proses ini sampai upaya transmisi berhasil, mengembalikan kesalahan terkait non-transmisi, atau semua titik akhir dalam daftar cadangan telah mengembalikan kesalahan transmisi.
Untuk informasi selengkapnya tentang titik akhir cadangan, lihat Pengantar Perutean dan Filter Pesan.
Streaming
Layanan perutean dapat berhasil mengalirkan pesan jika Anda mengatur pengikatan untuk mendukung streaming. Namun, ada beberapa syarat di mana pesan mungkin perlu di-buffer:
Multicast (buffer untuk membuat salinan pesan tambahan)
Failover (buffer jika pesan perlu dikirim ke cadangan)
System.ServiceModel.Routing.RoutingConfiguration.RouteOnHeadersOnly salah (buffer untuk menyajikan MessageFilterTable dengan MessageBuffer sehingga filter dapat memeriksa isinya)
Konfigurasi dinamis