Proksi Layanan
Proksi layanan adalah proksi sisi klien untuk layanan. Proksi layanan memungkinkan aplikasi untuk mengirim dan menerima pesan melalui saluran sebagai panggilan metode.
Proksi layanan dibuat sesuai kebutuhan, dibuka, digunakan untuk memanggil layanan, dan ditutup saat tidak lagi diperlukan. Atau, aplikasi dapat menggunakan kembali proksi layanan untuk terhubung berulang kali ke layanan yang sama tanpa pengeluaran waktu dan sumber daya yang diperlukan untuk menginisialisasi proksi layanan lebih dari sekali. Diagram berikut mengilustrasikan alur kemungkinan status proksi layanan dan panggilan fungsi atau peristiwa yang mengarah dari satu status ke status lainnya.
Status proksi layanan ini dijumlahkan dalam enumerasi WS_SERVICE_PROXY_STATE .
Seperti yang diilustrasikan oleh diagram sebelumnya dan kode berikut, proksi layanan dibuat oleh panggilan ke fungsi WsCreateServiceProxy . Sebagai parameter untuk panggilan ini, WWSAPI menyediakan enumerasi berikut:
Ini juga menerima parameter opsional menggunakan jenis data berikut:
Ketika proksi layanan telah dibuat, fungsi WsCreateServiceProxy mengembalikan referensi ke proksi layanan, WS_SERVICE_PROXY, melalui parameter keluar.
WS_SERVICE_PROXY* serviceProxy = NULL;
hr = WsCreateServiceProxy (
WS_TCP_CHANNEL_BINDING,
WS_CHANNEL_TYPE_DUPLEX_SESSION,
NULL,
NULL,
0,
NULL,
0,
&serviceProxy,
error);
Ketika proksi layanan telah dibuat, aplikasi dapat membuka proksi layanan untuk komunikasi ke layanan dengan memanggil fungsi WsOpenServiceProxy , meneruskan struktur alamat yang berisi alamat jaringan titik akhir layanan untuk disambungkan.
WS_ENDPOINT_ADDRESS address = {0};
address.uri.chars = "net.tcp://localhost/example";
address.uri.length = wcslen("net.tcp://localhost/example";);
hr = WsOpenServiceProxy(serviceProxy, &address, NULL, error);
Ketika proksi layanan telah dibuka, aplikasi dapat menggunakannya untuk melakukan panggilan ke layanan.
hr = Add(
serviceProxy,
1,
2,
&result,
NULL,
0,
NULL,
error);
Ketika aplikasi tidak lagi membutuhkan proksi layanan, aplikasi menutup proksi layanan dengan memanggil fungsi WsCloseServiceProxy . Ini juga membebaskan memori terkait dengan memanggil WsFreeServiceProxy.
hr = WsCloseServiceProxy(
serviceProxy,
NULL,
error);
hr = WsFreeServiceProxy(
serviceProxy,
error);
Gunakan kembali Proksi Layanan
Atau, setelah memanggil WsCloseServiceProxy , aplikasi dapat menggunakan kembali proksi layanan dengan memanggil fungsi WsResetServiceProxy .
hr = WsResetServiceProxy(
serviceProxy,
error);
Untuk informasi selengkapnya tentang bagaimana proksi layanan digunakan dalam konteks yang berbeda, lihat topik berikut:
Keamanan
Pertimbangan desain aplikasi berikut harus dicatat dengan cermat saat Anda menggunakan API proksi layanan WWSAPI:
- Proksi layanan tidak akan melakukan validasi data apa pun di luar validasi Profil Dasar 2.0 dan serialisasi XML. Adalah tanggung jawab aplikasi untuk memvalidasi data yang terkandung dalam parameter yang diterimanya kembali sebagai bagian dari panggilan.
- Mengonfigurasi jumlah maksimum panggilan yang tertunda pada proksi layanan, dengan menggunakan nilai enumerasi WS_PROXY_PROPERTY_IDWS_PROXY_PROPERTY_MAX_PENDING_CALLS, memberikan perlindungan terhadap server yang berjalan lambat. Maksimum default adalah 100. Aplikasi harus berhati-hati dalam memodifikasi default.
- Proksi layanan tidak memberikan jaminan keamanan di luar yang ditentukan dalam struktur WS_SECURITY_DESCRIPTION yang digunakan untuk berkomunikasi dengan server.
- Berhati-hatilah saat Anda memodifikasi default pesan dan saluran pada proksi layanan. Baca pertimbangan keamanan yang terkait dengan pesan dan saluran sebelum Anda memodifikasi salah satu properti terkait.
- Proksi layanan mengenkripsi semua kredensial yang disimpan dalam memori.
Elemen API berikut berkaitan dengan proksi layanan.
Callback | Deskripsi |
---|---|
WS_PROXY_MESSAGE_CALLBACK | Dipanggil ketika header pesan input akan dikirim melalui atau ketika header pesan output baru saja diterima. |
Enumeration | Deskripsi |
---|---|
WS_CALL_PROPERTY_ID | Menghitung parameter opsional untuk mengonfigurasi panggilan pada operasi layanan sisi klien. |
WS_PROXY_PROPERTY_ID | Menghitung parameter opsional untuk mengonfigurasi proksi layanan. |
WS_SERVICE_PROXY_STATE | Status proksi layanan. |
Fungsi | Deskripsi |
---|---|
WsAbandonCall | Mengabaikan panggilan tertentu pada proksi layanan tertentu. |
WsAbortServiceProxy | Membatalkan semua input dan output yang tertunda pada proksi layanan tertentu. |
WsCall | Hanya internal. Menserialisasikan argumen ke dalam pesan dan mengirimkannya melalui saluran. |
WsCloseServiceProxy | Menutup proksi layanan untuk komunikasi. |
WsCreateServiceProxy | Membuat proksi layanan. |
WsFreeServiceProxy | Merilis memori yang terkait dengan proksi layanan. |
WsGetServiceProxyProperty | Mengambil properti proksi layanan tertentu. |
WsOpenServiceProxy | Membuka proksi layanan ke titik akhir layanan. |
WsResetServiceProxy | Mereset proksi layanan. |
Menangani | Deskripsi |
---|---|
WS_SERVICE_PROXY | Jenis buram yang digunakan untuk mereferensikan proksi layanan. |
Struktur | Deskripsi |
---|---|
WS_CALL_PROPERTY | Menentukan properti panggilan. |
WS_PROXY_PROPERTY. | Menentukan properti proksi. |