Bagikan melalui


Persyaratan untuk Objek yang Dapat Dikumpulkan

Objek yang dapat dikumpulkan harus memenuhi persyaratan tertentu untuk mengaktifkan satu instans objek yang akan digunakan oleh beberapa klien.

Tanpa status

Untuk menjaga keamanan, konsistensi, dan isolasi, objek yang dapat dikumpulkan tidak boleh memiliki status khusus klien dari klien ke klien. Anda dapat mengelola status per klien apa pun dengan menggunakan IObjectControl, melakukan inisialisasi khusus konteks dengan IObjectControl::Mengaktifkan dan membersihkan status klien apa pun dengan IObjectControl::D eactivate. Untuk detail selengkapnya, lihat Mengontrol Masa Pakai dan Status Objek.

Tanpa Afinitas Utas

Objek yang dapat dikumpulkan tidak dapat diikat ke utas tertentu; jika tidak, performa bisa berpotensi menjadi bencana. Untuk alasan ini, objek yang dapat dikumpulkan tidak dapat ditandai untuk dijalankan dalam model apartemen; mereka harus berjalan di apartemen multithreaded atau apartemen netral. Selain itu, objek yang dapat dikumpulkan tidak boleh menggunakan penyimpanan lokal utas juga tidak boleh mengagregasi marshaler utas bebas. Untuk detail selengkapnya tentang threading di COM+, lihat COM+ Threading Models.

Catatan

Lingkungan pengembangan Microsoft Visual Basic 6.0 dan yang lebih lama hanya dapat membuat komponen model apartemen. Namun, di Visual Basic .NET, komponen dapat dikumpulkan.

 

Dapat diagregasi

Objek yang dapat dikumpulkan harus mendukung agregasi—yaitu, objek harus mendukung dibuat dengan memanggil CoCreateInstance dengan argumen non-NULL pUnkOuter. Ketika COM+ mengaktifkan objek yang dikumpulkan, ia membuat agregat untuk mengelola masa pakai objek yang dikumpulkan dan untuk memanggil metode pada IObjectControl. Untuk detail tentang menulis objek yang dapat diagregasi, lihat Agregasi.

Komponen Transaksi

Objek yang dapat dikumpulkan yang berpartisipasi dalam transaksi harus mendaftarkan sumber daya terkelola secara manual. Meskipun dikumpulkan, jika objek Anda menyimpan sumber daya terkelola seperti koneksi database, tidak akan ada cara bagi manajer sumber daya untuk secara otomatis mendaftarkan dalam transaksi ketika objek diaktifkan dalam konteks tertentu. Oleh karena itu, objek itu sendiri harus menangani logika mendeteksi transaksi, menonaktifkan pendaftaran otomatis manajer sumber daya dan secara manual mendaftarkan sumber daya apa pun yang dipegangnya. Selain itu, objek terkumpul transaksional harus mencerminkan status sumber dayanya saat ini dalam nilai parameter IObjectControl::CanBePooled. Untuk detail selengkapnya, lihat Mengumpulkan Objek Transaksi.

Menerapkan IObjectControl untuk Mengelola Masa Pakai Objek

Objek yang dapat dikumpulkan harus mengimplementasikan IObjectControl, meskipun tidak benar-benar perlu melakukannya. Komponen transaksional yang dikumpulkan, bagaimanapun, harus menerapkan IObjectControl. Komponen-komponen ini harus memantau status sumber daya yang mereka pegang dan menunjukkan kapan mereka tidak dapat digunakan kembali; ketika IObjectControl::CanBePooled mengembalikan false, itu akan merusak transaksi. Untuk detail selengkapnya, lihat Mengontrol Masa Pakai dan Status Objek.

Pembatasan Bahasa

Komponen yang dikembangkan menggunakan Microsoft Visual Basic 6.0 dan yang lebih lama tidak dapat dikumpulkan karena komponen ini akan menjadi utas model apartemen. Namun, di Visual Basic .NET, komponen dapat dikumpulkan.

Komponen Warisan

Selama tidak transaksi dan sesuai dengan persyaratan sebelumnya yang sesuai, komponen dapat dikumpulkan bahkan jika tidak secara khusus ditulis dengan kemampuan pengumpulan dalam pikiran. Tidak perlu menerapkan IObjectControl; komponen yang tidak melakukannya tidak akan berpartisipasi dalam mengelola masa pakainya. Jika IObjectControl::CanBePooled tidak diimplementasikan, objek akan terus digunakan kembali hingga kumpulan mencapai ukuran maksimum.

COM+ String Konstruktor Objek

Mengontrol Masa Pakai dan Status Objek

Cara Kerja Pengumpulan Objek

Meningkatkan Performa dengan Pengumpulan Objek

Mengumpulkan Objek Transaksi yang Bertransaksi