Cara Kerja Pengumpulan Objek

Ketika Anda mengonfigurasi komponen yang akan dikumpulkan, COM+ akan mempertahankan instansnya dalam kumpulan, siap diaktifkan untuk klien mana pun yang meminta komponen. Setiap permintaan pembuatan objek akan ditangani melalui manajer kumpulan.

Kumpulan dikonfigurasi dan dikelola berdasarkan per komponen. Kumpulan terdiri dari objek homogen yang memiliki CLSID yang sama. Satu-satunya pengecualian adalah untuk objek transaksi, di mana subpool dipertahankan berisi objek yang memiliki afinitas transaksi saat transaksi tertunda.

Ketika aplikasi dimulai, kumpulan akan diisi hingga tingkat minimum yang telah Anda tentukan secara administratif, selama pembuatan objek berhasil. Saat permintaan klien untuk komponen masuk, mereka puas berdasarkan first-come first-served dari kumpulan. Jika tidak ada objek terkumpulan yang tersedia dan kumpulan belum pada tingkat maksimum yang ditentukan, objek baru dibuat dan diaktifkan untuk klien.

Ketika kumpulan mencapai tingkat maksimumnya, permintaan klien diantrekan dan akan menerima objek pertama yang tersedia dari kumpulan. Jumlah objek, termasuk diaktifkan dan dinonaktifkan, tidak akan pernah melebihi nilai kumpulan maksimum. Permintaan pembuatan objek akan kehabisan waktu setelah periode yang ditentukan secara administratif sehingga Anda dapat mengontrol berapa lama klien akan menunggu pembuatan objek. Setelah kegagalan waktu habis, klien akan mendapatkan kembali kesalahan E_TIMEOUT dari CoCreateInstance.

Jika memungkinkan, COM+ akan mencoba menggunakan kembali objek setelah klien merilisnya, hingga kumpulan mencapai tingkat maksimumnya. Objek bertanggung jawab untuk memantau statusnya untuk menentukan apakah dapat digunakan kembali dan harus mengembalikan nilai yang sesuai untuk IObjectControl::CanBePooled.

Ketika objek yang dikumpulkan dibuat, objek tersebut dikumpulkan ke dalam objek yang lebih besar yang akan mengelola masa pakai objek. Objek luar memanggil metode pada IObjectControl pada waktu yang tepat dalam siklus hidup objek, sebagai berikut:

  • Metode Aktifkan dipanggil setiap kali objek dikembalikan ke klien, diaktifkan dalam konteks tertentu.
  • Metode Nonaktifkan dipanggil setiap kali objek dirilis oleh klien atau, dalam kasus objek yang diaktifkan JIT, ketika dinonaktifkan.
  • Metode CanBePooled dipanggil setiap kali objek akan dikembalikan ke kumpulan umum. Jika objek mendeteksi bahwa beberapa sumber daya yang dapat digunakan kembali dalam keadaan buruk, objek harus mengembalikan FALSE untuk metode ini dan manajer kumpulan akan membuang objek.

Objek tidak selalu perlu mengimplementasikan IObjectControl. Jika tidak, instans akan selalu digunakan kembali, sampai tingkat maksimum kumpulan tercapai.

Untuk detail tentang cara mengonfigurasi komponen yang akan dikumpulkan, lihat Mengonfigurasi Komponen untuk Dikumpulkan.

COM+ String Konstruktor Objek

Mengontrol Masa Pakai dan Status Objek

Meningkatkan Performa dengan Pengumpulan Objek

Mengumpulkan Objek Transaksi yang Bertransaksi

Persyaratan untuk Objek yang Dapat Dikumpulkan