Mengontrol Masa Pakai dan Status Objek

Objek yang dikumpulkan dapat berpartisipasi dalam cara COM+ mengelola aktivitasnya di kumpulan dengan menerapkan IObjectControl. Ketika objek yang dikumpulkan dibuat, objek tersebut dikumpulkan ke dalam objek yang lebih besar yang akan mengelola objek dengan memanggil metode berikut pada IObjectControl pada titik reguler dalam siklus hidup objek:

  • Aktifkan—Dipanggil setiap kali objek dikembalikan ke klien, diaktifkan dalam konteks tertentu.
  • Nonaktifkan—Dipanggil setiap kali objek dirilis oleh klien atau, dalam kasus objek yang diaktifkan JIT, saat dinonaktifkan.
  • CanBePooled—Dipanggil setiap kali objek akan dikembalikan ke kumpulan umum.

Menerapkan IObjectControl bersifat opsional, kecuali untuk objek transaksional, yang harus selalu menerapkan CanBePooled untuk memantau status sumber daya yang mereka pegang. Namun, disarankan untuk menerapkan IObjectControl dalam banyak kasus karena menyediakan cara yang efisien untuk mengelola perilaku objek yang dikumpulkan, seperti yang dijelaskan di bawah ini.

Melakukan Inisialisasi Khusus Konteks

Dengan menggunakan Aktifkan, Anda dapat menginisialisasi objek dalam konteks di mana objek diaktifkan untuk klien tertentu. Misalnya, untuk menentukan apakah objek memiliki afinitas transaksi (sumber dayanya mungkin sudah terdaftar), Anda mungkin mendapatkan ID transaksi yang terkait dengan konteks.

Biasanya Anda akan menggunakan Aktifkanuntuk melakukan inisialisasi yang konsisten di semua metode yang diekspos oleh objek, memperlakukannya sebagai bagian khusus konteks dari konstruktor objek.

Membersihkan status klien apa pun

Dengan menggunakan Nonaktifkan, Anda dapat menyingkirkan status khusus klien apa pun yang mungkin ada sehingga objek Anda kembali ke kumpulan dalam status generik sepenuhnya dan kemudian dapat digunakan oleh klien mana pun tanpa mengorbankan keamanan atau isolasi.

Mengontrol Penggunaan Kembali Objek

Dengan menggunakan CanBePooled, Anda dapat memantau status internal objek Anda dan melaporkan apakah cocok untuk penggunaan kembali. Jika CanBePooled mengembalikan True dan maksimum kumpulan belum tercapai, objek ditempatkan kembali di kumpulan umum. Jika CanBePooled mengembalikan False, objek akan dibuang. Dalam kasus komponen transaksi, mengembalikan False akan mengacaukan transaksi saat ini.

Biasanya, Anda akan menyimpan beberapa anggota data global untuk objek tersebut, dan jika Anda mendeteksi koneksi menjadi buruk atau sumber daya dalam keadaan buruk, atur ini untuk mencerminkan situasi saat ini dan mengembalikannya melalui CanBePooled.

Jika objek tidak menerapkan CanBePooled, instans akan terus digunakan kembali hingga tingkat maksimum kumpulan tercapai.

COM+ String Konstruktor Objek

Cara Kerja Pengumpulan Objek

Meningkatkan Performa dengan Pengumpulan Objek

Mengumpulkan Objek Transaksi yang Bertransaksi

Persyaratan untuk Objek yang Dapat Dikumpulkan