Handel Pengikatan Implisit
Handel pengikatan implisit memungkinkan aplikasi Anda memilih server tertentu untuk menjalankan panggilan prosedur jarak jauhnya. Untuk detailnya, lihat Pengikatan Sisi Klien. Mereka juga memungkinkan program klien/server Anda untuk menggunakan pengikatan terautentikasi. Artinya, klien dapat menentukan informasi autentikasi dalam handel pengikatan implisit. Pustaka run-time RPC menggunakan informasi autentikasi untuk membuat sesi RPC terautentikasi antara klien dan server. Untuk informasi selengkapnya, lihat Keamanan.
Catatan
Handel pengikatan implisit tidak aman untuk utas. Oleh karena itu, aplikasi multi-utas harus menghindari penggunaan handel pengikatan implisit.
Saat aplikasi Anda menggunakan pengikatan implisit, klien harus mengatur informasi pengikatan sehingga dapat membuat pengikatan. Setelah klien membuat pengikatan implisit, klien tidak perlu meneruskan handel pengikatan apa pun ke prosedur jarak jauh. Pustaka RPC menangani mekanisme sesi komunikasi lainnya.
Klien menyimpan informasi pengikatan untuk handel implisit dalam variabel global. Ketika pengkompilasi MIDL menghasilkan stub klien dan file header dari spesifikasi antarmuka dalam file MIDL Anda, itu juga menghasilkan kode untuk variabel handel pengikatan global. Program klien Anda menginisialisasi handel dan kemudian tidak merujuknya lagi sampai menghancurkan pengikatan.
Anda membuat handel implisit dengan menentukan atribut [implicit_handle] di ACF untuk antarmuka sebagai berikut:
/* ACF file (complete) */
[
implicit_handle(handle_t hHello)
]
interface hello
{
}
Jenis handle_t , yang digunakan dalam contoh sebelumnya, adalah jenis data MIDL yang digunakan untuk menentukan handel pengikatan.
Setelah membuat handel implisit, aplikasi perlu menggunakannya sebagai parameter untuk fungsi pustaka run-time RPC. Jangan gunakan handel implisit sebagai parameter untuk panggilan prosedur jarak jauh. Sampel kode berikut menunjukkan penggunaan handel pengikatan implisit.
RPC_STATUS status;
status = RpcBindingFromStringBinding(
pszStringBinding,
&hHello);
status = MyRemoteProcedure();
status = RpcBindingFree(hHello);
...
Dalam contoh sebelumnya, pustaka run-time RPC memfungsikan RpcBindingFromStringBinding dan RpcBindingFree keduanya memerlukan handel pengikatan implisit untuk diteruskan dalam daftar parameter mereka. Namun, prosedur jarak jauh MyRemoteProcedure tidak, karena bukan fungsi pustaka run-time RPC.