Bagikan melalui


Merancang Antarmuka yang Dapat Diremobilitas

Dengan munculnya model objek komponen terdistribusi, penting bahwa antarmuka kustom Anda dapat diremotable, bahkan jika Anda ingin menggunakannya dalam proses saja.

MIDL lebih dari sekadar cara untuk menghasilkan file header untuk antarmuka Anda. Ini adalah bahasa pemrograman untuk jarak jauh yang memungkinkan Anda menggunakan antarmuka di seluruh batas mesin, proses, dan utas. Ini berarti Bahwa Anda perlu memverifikasi perilaku antarmuka yang ditentukan MIDL Anda dalam kondisi tersebut sebelum Anda merilis program Anda kepada pelanggan. Jika Anda membuat kesalahan di IDL Anda dan antarmuka tidak di-remote dengan benar, mungkin sulit untuk memperbaiki kesalahan itu. Anda harus merevisi antarmuka Anda dengan IID baru dan membiarkan yang lama untuk kompatibilitas mundur atau Anda harus mengonversi setiap klien dan setiap komputer server di mana pun pada saat yang sama.

Bahkan jika antarmuka Anda tidak akan pernah digunakan di luar proses, antarmuka tersebut dapat digunakan lintas alur. Masalah terburuk untuk file IDL yang tidak dicentang dapat muncul untuk server dalam proses yang tidak mendukung beberapa apartemen berulir tunggal). Server yang tidak menentukan model utas secara implisit berulir tunggal. Semua yang ditandai dengan utas tunggal dipaksa ke utas yang pertama kali disebut CoInitialize atau CoInitializeEx. Jika beberapa utas lain adalah yang mengaktifkan objek, semua antarmuka pada server utas tunggal tersebut harus di-remote kembali ke utas yang mengaktifkan, yang dapat menghasilkan pengembalian REGDB_E_IIDNOTREG sebagai respons terhadap panggilan ke QueryInterface). Kecuali Anda benar-benar dapat menegaskan bahwa antarmuka Anda dalam proses dan selalu akan dipanggil pada utas yang sama, Anda akan mendapatkan jarak jauh pada beberapa waktu.

Terakhir, sebagai perancang antarmuka, Anda perlu mempertimbangkan bagaimana aplikasi klien akan menggunakan antarmuka Anda. Dua hal, bersama-sama, menentukan apakah antarmuka akan efisien di seluruh batas proses dan mesin: frekuensi panggilan metode di seluruh batas antarmuka, dan jumlah data yang akan ditransfer dalam panggilan metode tertentu. Meskipun COM membuat panggilan lintas proses dan lintas jaringan transparan untuk program, COM tidak dapat membuat panggilan frekuensi tinggi dan bandwidth tinggi efisien di seluruh ruang alamat. Dalam beberapa kasus, lebih tepat untuk merancang antarmuka yang biasanya hanya akan diimplementasikan sebagai server dalam proses sementara antarmuka lain lebih sesuai untuk penggunaan jarak jauh.