Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
COM berbeda dari model objek runtime .NET dengan beberapa cara penting:
Klien objek COM harus mengelola masa pakai objek tersebut; runtime bahasa umum mengelola masa pakai objek di lingkungannya.
Klien objek COM menemukan apakah layanan tersedia dengan meminta antarmuka yang menyediakan layanan tersebut dan mendapatkan kembali penunjuk antarmuka, atau tidak. Klien objek .NET dapat memperoleh deskripsi fungsionalitas objek menggunakan pantulan.
Objek NET berada dalam memori yang dikelola oleh lingkungan eksekusi runtime .NET. Lingkungan eksekusi dapat memindahkan objek dalam memori karena alasan performa dan memperbarui semua referensi ke objek yang dipindahkannya. Klien tanpa manajemen, setelah mendapatkan penunjuk ke objek, mengharapkan objek tetap berada di lokasi yang sama. Para klien ini tidak memiliki mekanisme untuk menangani obyek yang lokasinya tidak tetap.
Untuk mengatasi perbedaan ini, runtime menyediakan kelas pembungkus untuk membuat klien terkelola dan tidak terkelola berpikir mereka memanggil objek dalam lingkungan masing-masing. Setiap kali klien terkelola Anda memanggil suatu metode pada objek COM, runtime akan membuat sebuah pembungkus yang dapat dipanggil oleh runtime (RCW). RCW mengabstraksi perbedaan antara mekanisme referensi yang dikelola dan tidak dikelola, antara lain. Runtime juga membuat COM Callable Wrapper (CCW) untuk membalikkan proses, memungkinkan klien COM memanggil metode pada objek .NET secara mulus. Seperti yang ditunjukkan oleh ilustrasi berikut, perspektif dari kode panggilan menentukan kelas pembungkus mana yang akan dibuat oleh runtime.
Dalam sebagian besar kasus, RCW standar atau CCW yang dihasilkan oleh lingkungan run-time menyediakan marshalling yang memadai untuk panggilan yang melintasi batas antara COM dan lingkungan run-time .NET. Dengan menggunakan atribut kustom, Anda dapat secara opsional menyesuaikan cara runtime mewakili kode terkelola dan tidak terkelola.