Alamat Titik Akhir
Setiap titik akhir memiliki alamat yang terkait dengannya, yang digunakan untuk menemukan dan mengidentifikasi titik akhir. Alamat ini terutama terdiri dari Pengidentifikasi Sumber Daya Seragam (URI), yang menentukan lokasi titik akhir. Alamat titik akhir direpresentasikan dalam model pemrograman Windows Communication Foundation (WCF) oleh kelas EndpointAddress, yang berisi properti Identity opsional yang memungkinkan autentikasi titik akhir oleh titik akhir lain yang bertukar pesan dengannya, dan sekumpulan properti Headers opsional, yang menentukan header SOAP lain yang diperlukan untuk menjangkau layanan. Header opsional memberikan informasi pengalamatan tambahan dan lebih mendetail untuk mengidentifikasi atau berinteraksi dengan titik akhir layanan. Alamat titik akhir diwakili pada kabel sebagai referensi titik akhir WS-Addressing (EPR).
Struktur URI Alamat
Alamat URI untuk sebagian besar transportasi memiliki empat bagian. Misalnya, empat bagian URI http://www.fabrikam.com:322/mathservice.svc/secureEndpoint
dapat dibuat item sebagai berikut:
Skema:
http:
Mesin:
www.fabrikam.com
(opsional) Port: 322
Jalur: /mathservice.svc/secureEndpoint
Menentukan Alamat untuk Layanan
Alamat titik akhir untuk layanan dapat ditentukan baik secara imperatif menggunakan kode atau secara deklaratif melalui konfigurasi. Menentukan titik akhir dalam kode biasanya tidak praktis karena pengikatan dan alamat untuk layanan yang disebarkan biasanya berbeda dari yang digunakan saat layanan sedang dikembangkan. Umumnya, lebih praktis menentukan titik akhir layanan menggunakan konfigurasi, bukan kode. Menjaga informasi pengikatan dan pengalamatan dari kode memungkinkannya mengubah tanpa harus mengompilasi ulang atau memindahkan aplikasi.
Menentukan Alamat dalam Konfigurasi
Untuk menentukan titik akhir dalam file konfigurasi, gunakan elemen <titik akhir>. Untuk detail dan contoh, lihat Menentukan Alamat Titik Akhir.
Menentukan Alamat dalam Kode
Alamat titik akhir dapat dibuat dalam kode dengan kelas EndpointAddress. Untuk detail dan contoh, lihat Menentukan Alamat Titik Akhir.
Titik akhir dalam WSDL
Alamat titik akhir juga dapat diwakili dalam WSDL sebagai elemen EPR WS-Addressing di dalam elemen wsdl:port
titik akhir yang sesuai. EPR berisi alamat titik akhir serta properti alamat apa pun. Untuk detail dan contoh, lihat Menentukan Alamat Titik Akhir.
Beberapa Dukungan Pengikatan IIS di .NET Framework 3.5
Penyedia layanan internet sering meng-host banyak aplikasi di server dan situs yang sama untuk meningkatkan kepadatan situs dan menurunkan total biaya kepemilikan. Aplikasi ini biasanya terikat dengan alamat dasar yang berbeda. Situs web Layanan Informasi Internet (IIS) dapat berisi beberapa aplikasi. Aplikasi dalam situs dapat diakses melalui satu pengikatan IIS atau lebih.
Pengikatan IIS memberikan dua informasi: protokol pengikatan dan informasi pengikatan. Protokol pengikatan menentukan skema tempat komunikasi terjadi dan informasi pengikatan adalah informasi yang digunakan untuk mengakses situs.
Contoh berikut menunjukkan komponen yang bisa ada dalam pengikatan IIS:
Protokol Pengikatan: HTTP
Informasi Pengikatan: Alamat IP, Port, Header Host
IIS dapat menentukan beberapa pengikatan untuk setiap situs yang menghasilkan beberapa alamat dasar untuk setiap skema. Sebelum .NET Framework 3.5, WCF tidak mendukung beberapa alamat untuk skema dan, jika ditentukan, menampilkan ArgumentException selama aktivasi.
.NET Framework 3.5 memungkinkan penyedia layanan Internet meng-host beberapa aplikasi dengan alamat dasar yang berbeda untuk skema yang sama di situs yang sama.
Misalnya, situs dapat berisi alamat dasar berikut:
http://payroll.myorg.com/Service.svc
http://shipping.myorg.com/Service.svc
Dengan .NET Framework 3.5, Anda menentukan filter awalan di tingkat AppDomain dalam file konfigurasi. Anda melakukan ini dengan elemen <baseAddressPrefixFilters>, yang berisi daftar awalan. Alamat dasar yang masuk, yang diberikan oleh IIS, difilter berdasarkan daftar awalan opsional. Secara default, jika awalan tidak ditentukan, semua alamat diteruskan. Menentukan awalan hanya menghasilkan alamat dasar yang cocok untuk skema yang akan diteruskan.
Berikut contoh kode konfigurasi yang menggunakan filter awalan.
<system.serviceModel>
<serviceHostingEnvironment>
<baseAddressPrefixFilters>
<add prefix="net.tcp://payroll.myorg.com:8000"/>
<add prefix="http://shipping.myorg.com:8000"/>
</baseAddressPrefixFilters>
</serviceHostingEnvironment>
</system.serviceModel>
Dalam contoh sebelumnya, net.tcp://payroll.myorg.com:8000
dan http://shipping.myorg.com:8000
adalah satu-satunya alamat dasar untuk skema masing-masing yang akan diteruskan.
baseAddressPrefixFilter
tidak mendukung wildcard.
Selain itu, alamat dasar yang disediakan oleh IIS mungkin memiliki alamat yang terikat ke skema lain yang tidak ada dalam daftar baseAddressPrefixFilters
. Alamat ini tidak difilter.
Beberapa Dukungan Pengikatan IIS di .NET Framework 4 dan versi yang lebih baru
Mulai dari .NET 4, Anda dapat mengaktifkan dukungan untuk beberapa pengikatan di IIS tanpa harus memilih satu alamat dasar, dengan mengatur setelan ServiceHostingEnvironmentMultipleSiteBindingsEnabled ke true. Dukungan ini terbatas pada skema protokol HTTP.
Berikut contoh kode konfigurasi yang menggunakan multipleSiteBindingsEnabled di <serviceHostingEnvironment>.
<system.serviceModel>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" >
</serviceHostingEnvironment>
</system.serviceModel>
Setelan baseAddressPrefixFilters diabaikan, untuk protokol HTTP dan non-HTTP, jika beberapa pengikatan situs diaktifkan menggunakan setelan ini.
Untuk detail dan contohnya, lihat Mendukung Beberapa Pengikatan Situs IIS dan MultipleSiteBindingsEnabled.
Memperluas Pengalamatan di Layanan WCF
Model pengalamatan default layanan WCF menggunakan alamat titik akhir URI untuk tujuan berikut:
Untuk menentukan alamat mendengarkan layanan, lokasi tetap titik akhir mendengarkan pesan,
Untuk menentukan filter alamat SOAP, alamat yang diharapkan titik akhir sebagai header SOAP.
Nilai untuk masing-masing tujuan ini dapat ditentukan secara terpisah, yang memungkinkan beberapa ekstensi pengalamatan yang mencakup skenario yang berguna:
Perantara SOAP: pesan yang dikirim oleh klien melintasi satu layanan tambahan atau lebih yang memproses pesan sebelum mencapai tujuan akhir. Perantara SOAP dapat melakukan berbagai tugas, seperti penembolokan, perutean, penyeimbangan beban, atau validasi skema pada pesan. Skenario ini dicapai dengan mengirim pesan ke alamat fisik terpisah (
via
) yang menargetkan perantara, bukan hanya ke alamat logis (wsa:To
) yang menargetkan tujuan utama.Alamat titik akhir mendengarkan adalah URI privat dan diatur ke nilai yang berbeda dengan propertinya
listenURI
-nya.
Alamat transportasi yang ditentukan via
adalah lokasi tempat pesan awalnya harus dikirim dalam perjalanan ke beberapa alamat jarak jauh lain yang ditentukan oleh parameter to
tempat layanan berada. Dalam sebagian besar skenario Internet, URI via
sama dengan properti Uri alamat to
akhir layanan. Anda hanya membedakan antara kedua alamat ini saat Anda harus melakukan perutean manual.
Header Pengalamatan
Titik akhir dapat ditangani oleh satu atau lebih header SOAP selain URI dasarnya. Satu set skenario di mana ini berguna adalah satu set skenario perantara SOAP di mana titik akhir mengharuskan klien dari titik akhir itu untuk menyertakan header SOAP yang ditargetkan pada perantara.
Anda dapat menentukan header alamat kustom dengan dua cara—dengan menggunakan kode atau konfigurasi:
Dalam kode, buat header alamat kustom dengan menggunakan kelas AddressHeader, lalu gunakan dalam konstruksi EndpointAddress.
Dalam konfigurasi, <header> kustom ditentukan sebagai turunan elemen <titik akhir>.
Konfigurasi umumnya lebih disukai daripada kode, karena memungkinkan Anda mengubah header setelah penyebaran.
Alamat Mendengarkan Kustom
Anda dapat mengatur alamat mendengarkan ke nilai yang berbeda dengan URI titik akhir. Ini berguna dalam skenario perantara di mana alamat SOAP yang akan diekspos adalah alamat perantara SOAP publik, sedangkan alamat tempat titik akhir benar-benar mendengarkan adalah alamat jaringan privat.
Anda dapat menentukan alamat mendengarkan kustom dengan menggunakan kode atau konfigurasi:
Dalam kode, tentukan alamat mendengarkan kustom dengan menambahkan kelas ClientViaBehavior ke koleksi perilaku titik akhir.
Dalam konfigurasi, tentukan alamat mendengarkan kustom dengan atribut
ListenUri
elemen <titik akhir> layanan.
Filter Alamat SOAP Kustom
Uri digunakan bersama dengan properti Headers apa pun untuk menentukan filter alamat SOAP titik akhir (AddressFilter). Secara default, filter ini memverifikasi bahwa pesan masuk memiliki header pesan To
yang cocok dengan URI titik akhir dan semua header titik akhir yang diperlukan ada dalam pesan.
Dalam beberapa skenario, titik akhir menerima semua pesan yang tiba di transportasi mendasar, dan bukan hanya yang memiliki header To
yang sesuai. Untuk mengaktifkannya, pengguna dapat menggunakan kelas MatchAllMessageFilter.