Bagikan melalui


Handler Client-Side 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 bergantung pada manajer proksi, mencegah kemungkinan kondisi kompetisi di mana handler dapat dirilis sebelum waktunya.

Manajer proksi adalah objek yang dibuat sistem yang mengimplementasikan antarmukaIMarshal. Jika Anda menggunakan marshaling standar, sistem membuatnya untuk Anda ketika Anda memanggil CoGetStandardMarshal (atau CoGetStdMarshalEx, untuk membuat marshaler agregat untuk handler ringan) dan juga mengimplementasikanIClientSecuritydan antarmuka IMultiQI pada objek. Di sisi server, ada objek sistem yang sesuai yang juga mengimplementasikan IMarshal. Objek-objek ini menangani marshaling bagi 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 diproses, server menulis data yang sama ke dalam aliran.
  • Data per antarmuka dari server. Bergantung pada antarmuka tertentu yang sedang diproses, server dapat menulis data yang berbeda ke dalam stream.
  • Pembantu di setiap 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 caching 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, untuk multipleks antarmuka IA dan IB yang terbuka melalui antarmuka jaringan yang sama, INetAB, seperti yang dilakukan oleh pengendali server embedding. 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 melakukan panggilan QueryInterface jarak jauh.

Handler OLE