Bagikan melalui


Intersepsi Panggilan Lintas Konteks

Saat objek diaktifkan dalam konteks tertentu, panggilan berikutnya ke atau darinya, dalam konteks, ditangani secara berbeda dari panggilan di seluruh batas konteks. Panggilan di seluruh batas konteks ditangani dengan proksi ringan. Proksi ini menangani mediasi apa pun yang diperlukan untuk menyesuaikan lingkungan run-time dari yang mengakomodasi pemanggil ke yang mengakomodasi penerima panggilan. Proses ini dikenal sebagai intersepsi.

Intersepsi panggilan lintas konteks diperlukan karena objek dalam konteks yang berbeda memiliki persyaratan run-time yang berbeda—inilah alasan konteksnya. COM+ mencegat referensi objek apa pun yang Anda berikan sebagai parameter metode dan secara otomatis mengonversinya ke proksi sehingga dapat digunakan dalam konteks baru.

Jika Anda berbagi referensi objek di seluruh batas konteks dengan cara lain—misalnya, dalam variabel global—Anda harus selalu menggunakan CoMarshalInterface dan CoUnmarshalInterface. Fungsi-fungsi ini dapat menerjemahkan referensi objek ke dalam proksi yang dapat digunakan dalam konteks yang berbeda. Jangan pernah berbagi referensi objek mentah di seluruh batas konteks.

Perilaku panggilan di seluruh konteks dapat memiliki konsekuensi yang tidak diinginkan dalam kasus objek yang mengekspos antarmuka yang tidak dapat dirusak. Dalam keadaan ini, Anda mungkin ingin bersikeras bahwa objek yang tidak dapat di-marshalasi diaktifkan hanya dalam konteks pemanggilnya dan tidak pernah dalam konteksnya sendiri. Anda dapat melakukan ini dengan memilih opsi Harus diaktifkan dalam konteks pemanggil pada tab Aktivasi halaman Properti komponen. (Lihat Menerapkan Aktivasi dalam Konteks Pemanggil untuk instruksi langkah demi langkah.)

Aktivasi konteks