Mengumpulkan Objek Transaksi yang Bertransaksi

Komponen transaksi yang akan dikumpulkan memiliki persyaratan khusus.

Mendaftarkan Sumber Daya Secara Manual

Objek yang dapat dikumpulkan yang berpartisipasi dalam transaksi harus mendaftarkan sumber daya terkelola secara manual. Jika objek menyimpan sumber daya terkelola antara klien, tidak akan ada cara bagi manajer sumber daya untuk secara otomatis mendaftarkan dalam transaksi ketika objek diaktifkan dalam konteks tertentu.

Objek itu sendiri harus menangani logika mendeteksi transaksi, menonaktifkan pendaftaran otomatis resource manager, dan secara manual mendaftarkan sumber daya apa pun yang dimilikinya. Langkah-langkah untuk melakukan ini khusus untuk resource manager yang Anda gunakan. Jika Anda perlu melakukan pendaftaran manual, lihat dokumentasi untuk resource manager Anda.

Seperti yang dijelaskan di bawah ini, objek dapat dikumpulkan dengan afinitas transaksi saat transaksi aktif dan dapat diaktifkan dengan afinitas transaksi jika dipanggil oleh klien yang terkait dengan transaksi tersebut. Sebelum mendaftarkan sumber daya, Anda harus terlebih dahulu memeriksa afinitas transaksi. Jika objek telah diambil dari kumpulan khusus untuk transaksi tersebut, objek telah melakukan pekerjaan dalam transaksi tersebut dan mendaftarkan sumber dayanya.

Menonaktifkan Pendaftaran Otomatis

Pendaftaran otomatis harus dinonaktifkan setelah sumber daya diperoleh, biasanya di konstruktor objek. Artinya, Anda menonaktifkan pendaftaran otomatis lalu menyambungkan.

Menonaktifkan pendaftaran otomatis terkadang dapat menjadi prosedur yang halus, terutama dalam kasus penyedia akses data berlapis. Pendaftaran otomatis terkadang digabungkan dengan pengumpulan koneksi, seperti halnya ODBC, dan terkadang tidak, seperti halnya OLE DB. Anda mungkin perlu memastikan bahwa pendaftaran otomatis nonaktif di beberapa tingkat penyedia.

Menerapkan IObjectControl

Objek yang dapat dikumpulkan yang berpartisipasi dalam transaksi harus memantau status sumber daya saat ini yang mereka pegang. Jika objek mendeteksi bahwa objek berada dalam status tidak dapat digunakan kembali—misalnya, jika koneksi buruk—objek harus mengembalikan False untuk IObjectControl::CanBePooled. Ini akan memiliki efek membuang instans objek dan mendooming transaksi saat ini.

Kumpulan Khusus Transaksi

Kumpulan objek umumnya homogen, dan objek terkumpul apa pun yang saat ini tidak digunakan baik untuk kembali ke klien mana pun. Satu-satunya pengecualian untuk aturan ini adalah dalam kasus objek transaksi, tempat pengumpulan objek dioptimalkan. Ketika klien yang meminta objek memiliki transaksi terkait, COM+ akan memindai kumpulan untuk objek yang tersedia yang sudah terkait dengan transaksi tersebut. Jika objek dengan afinitas transaksi ditemukan, objek dikembalikan ke klien; jika tidak, objek dari kumpulan umum dikembalikan.

Dengan cara ini, subpool khusus dipertahankan berisi objek dengan afinitas untuk transaksi tertentu. Ketika transaksi dilakukan atau dibatalkan, objek ini dikembalikan ke kumpulan umum tanpa afinitas transaksi, siap digunakan oleh klien mana pun.

Untuk alasan ini, ketika komponen Anda secara manual mendaftarkan sumber daya terkelolanya dalam transaksi, pertama-tama harus memeriksa untuk melihat apakah mereka sudah terdaftar. Jika demikian, tidak perlu mendaftar.

COM+ String Konstruktor Objek

Mengontrol Masa Pakai dan Status Objek

Cara Kerja Pengumpulan Objek

Meningkatkan Performa dengan Pengumpulan Objek

Persyaratan untuk Objek yang Dapat Dikumpulkan