Konteks COM+

Untuk komponen yang dikonfigurasi yang berjalan dalam aplikasi COM+, konteks adalah fondasi tempat layanan COM+ disediakan. Di COM+, konteks didefinisikan sebagai sekumpulan properti run-time yang terkait dengan satu atau beberapa objek COM yang digunakan untuk menyediakan layanan untuk objek tersebut.

Dalam COM+, setiap objek COM dikaitkan dengan tepat satu konteks saat berjalan (yaitu, antara aktivasi dan penonaktifannya), dan setiap konteks berada dalam tepat satu apartemen COM. Beberapa objek dapat berjalan dalam konteks yang sama, dan beberapa konteks dapat berada di dalam apartemen yang sama. Diinisialisasi saat objek diaktifkan, properti konteks, seperti properti konteks keamanan, mewakili kebutuhan run-time objek.

Catatan

Untuk komponen yang tidak dikonfigurasi yang tidak menggunakan layanan COM+, konteksnya adalah, sebagian besar, diabaikan.

 

COM+ menggunakan properti konteks sebagai dasar untuk menyediakan layanan run-time. Status penahanan properti ini yang menentukan bagaimana lingkungan eksekusi melakukan layanan untuk objek dalam konteks. Dalam beberapa kasus, Anda dapat berinteraksi langsung dengan properti konteks objek untuk menunjukkan beberapa status yang relevan dengan layanan yang disediakan untuk objek tersebut. Misalnya, Anda akan melakukan ini ketika objek yang berpartisipasi dalam transaksi otomatis memilih hasil transaksi.

Untuk diskusi terperinci tentang fondasi COM dari konsep-konsep ini, lihat Proses, Utas, dan Apartemen.

Interaksi Terprogram dengan Properti Konteks

Setiap konteks memiliki objek ObjectContext terkait yang melacak propertinya. Anda dapat mengakses ObjectContext dengan memanggil fungsi GetObjectContext . Setelah mengakses ObjectContext, Anda dapat memanggil metode pada antarmuka IObjectContext yang diekspos untuk memanipulasi properti konteks.

Misalnya, memanggil IObjectContext::SetComplete memiliki efek mengatur bit konsistensi transaksi menjadi "konsisten" dan JIT-activation dilakukan bit ke "selesai" pada konteks yang terkait dengan objek. Sinyal "Konsisten" ke COM+ yang Anda pilih untuk melakukan transaksi, dan "selesai" menunjukkan bahwa objek Anda siap untuk dinonaktifkan ketika metode kembali.

Selain IObjectContext, antarmuka khusus lainnya yang menyediakan akses ke properti konteks adalah IObjectContextInfo, IContextState, dan IObjectContextActivity. Hingga batas tertentu, ISecurityCallContext juga mengakses properti konteks. Anda dapat menggunakan IGetSecurityCallContext::GetSecurityCallContext untuk mendapatkan ISecurityCallContext.

Memahami Aktivasi dan Intersepsi

Umumnya, Anda perlu memikirkan konteks hanya sejauh mewakili sejumlah properti, beberapa di antaranya dapat Anda atur atau dapatkan, yang digunakan untuk menyediakan layanan COM+ untuk komponen Anda. Namun, dalam beberapa keadaan, Anda mungkin perlu mempertimbangkan dua aspek konteks yang saling terkait berikut secara lebih rinci:

  • Aktivasi konteks, atau inisialisasi objek dalam konteks yang sesuai.
  • Intersepsi, atau apa yang dilakukan COM+ pada panggilan di seluruh batas konteks.

Hubungan dengan Pembungkus Konteks MTS

Konteks secara efektif mengganti pembungkus konteks MTS. Tujuan yang mereka layani—menyediakan layanan otomatis dengan menjebak permintaan pembuatan—sekarang menjadi fitur terintegrasi COM+. Akibatnya, Anda tidak perlu lagi menggunakan fungsi Brankas Ref. Di MTS, Brankas Ref digunakan untuk mendapatkan referensi ke objek Anda yang dapat diteruskan di luar pembungkus konteksnya. Di COM+, ini tidak perlu; referensi objek normal (pointer ini ) berfungsi.