Handler Sisi Klien Yang Ringan
Handler sisi klien yang ringan memungkinkan Anda membuat handler sisi klien umum dengan ukuran apa pun, untuk membantu Anda melakukan segala jenis tugas standar. Sebagai handler, ini dapat digunakan oleh lebih dari satu klien. Mereka berbeda dari handler OLE karena tidak dapat dibuat sebelum server diluncurkan, dan masa pakainya terkait dengan manajer proksi, mencegah kemungkinan kondisi balapan di mana handler dapat dirilis sebelum waktunya.
Manajer proksi adalah objek yang dibuat sistem yang mengimplementasikan antarmuka IMarshal . Jika Anda menggunakan marshaling standar, sistem membuatnya untuk Anda ketika Anda memanggil CoGetStandardMarshal (atau CoGetStdMarshalEx, untuk membuat marshaler agregat untuk handler ringan) dan juga mengimplementasikan antarmuka IClientSecurity dan IMultiQI pada objek. Di sisi server, ada objek sistem yang sesuai yang juga mengimplementasikan IMarshal. Objek-objek ini menangani marshaling untuk Anda secara transparan.
Ada dua jenis umum dari handler ini yang mungkin ingin Anda terapkan:
- Handler yang melakukan layanan yang tidak memerlukan data tambahan dari server
- Handler yang menggunakan data tambahan dari server
Beberapa potensi penggunaan data tambahan dalam aliran yang disediakan oleh server adalah sebagai berikut:
- Data statis dari server. Terlepas dari antarmuka tertentu yang sedang di-marshal, server menulis data yang sama ke dalam aliran.
- Data per antarmuka dari server. Bergantung pada antarmuka tertentu mana yang sedang di-marshal, server dapat menulis data yang berbeda ke dalam aliran.
- Pembantu per antarmuka. Komponen COM per antarmuka diagregasi ke dalam handler klien dan mendelegasikan ke proksi standar. Misalnya, untuk meningkatkan performa jaringan, komponen COM untuk IStream dapat melakukan penembolokan data sisi klien, read-ahead, write-behind, op-locking, dan sebagainya.
- Versi jaringan antarmuka. Versi jaringan antarmuka berbeda dari antarmuka yang diekspos oleh kode aplikasi klien dan server. Dimungkinkan, misalnya, ke antarmuka multipleks yang diekspos IA dan IB melalui antarmuka jaringan yang sama INetAB, cara penyematan handler server. Misalnya, seseorang dapat mengonversi antarmuka transfer data menjadi antarmuka jaringan yang menggunakan pipa untuk transfer data yang efisien.
Klien tingkat bawah mungkin tidak memiliki kemampuan antarmuka unmarshaling yang memiliki handler kustom, karena dua alasan: Pertama, mereka mungkin tidak memahami CLSID yang digunakan dalam paket marshaled kustom ketika handler server dikumpulkan dan objek menginginkan handler. Kedua, kode handler bahkan mungkin tidak berjalan di sisi klien jika memerlukan fungsionalitas baru dari COM untuk membuat marshaler standar agregat dan untuk melakukan panggilan QueryInterface jarak jauh.
Topik terkait