Bagikan melalui


Mengonfigurasi Transaksi

Atribut transaksi adalah properti deklaratif yang secara otomatis mengelola transaksi untuk pengembang komponen. Dengan mengatur atribut ini, Anda menghilangkan kebutuhan untuk menggunakan kontrol transaksi eksplisit di komponen Anda.

COM+ menggunakan atribut transaksi komponen untuk menentukan jenis perlindungan transaksi yang diperlukan untuk setiap objek yang diaktifkannya. Tergantung pada persyaratannya, objek dapat berbagi transaksi pemanggilnya, memerlukan transaksi baru, atau beroperasi tanpa perlindungan transaksi.

COM+ menyediakan nilai atribut transaksi berikut:

Tamu penyandang cacat

Secara umum, Anda harus mengatur nilai atribut ini hanya ketika Anda yakin bahwa komponen tidak pernah mengakses manajer sumber daya. Saat Anda menonaktifkan atribut transaksi, COM+ mengabaikan persyaratan transaksional komponen dalam menentukan penempatan konteks objek. Akibatnya, objek dapat berbagi konteks pemanggilnya (dan transaksi). Saat memigrasikan komponen COM ke COM+, Anda harus menonaktifkan atribut transaksi untuk mempertahankan perilaku transaksional yang sama dengan komponen COM yang tidak dikonfigurasi.

Catatan

Komponen yang tidak dikonfigurasi adalah komponen COM yang belum diinstal dalam aplikasi COM+.

Tidak Didukung

Ketika Anda menetapkan nilai atribut ini, COM+ memastikan bahwa objek apa pun yang dibuat dari komponen tidak pernah berpartisipasi dalam transaksi, terlepas dari status transaksi dari pemanggilnya. Dengan mendeklarasikan nilai ini, Anda memastikan bahwa objek tidak memilih dalam transaksi pemanggilnya juga tidak dapat memulai transaksinya sendiri. Tidak Didukung adalah nilai default untuk semua komponen.

Didukung

Saat Anda mengatur nilai atribut ini, COM+ memastikan bahwa objek apa pun yang dibuat dari komponen berpartisipasi dalam transaksi jika ada. Anda menyatakan nilai ini ketika Anda ingin objek berbagi dalam transaksi pemanggilnya tanpa memerlukan transaksinya sendiri.

Diperlukan

Saat Anda mengatur nilai atribut ini, COM+ memastikan bahwa objek apa pun yang dibuat dari komponen bersifat transaksi. Saat COM+ mengaktifkan objek dengan pengaturan Diperlukan, ia melihat status transaksi dari pemanggilnya. Jika pemanggil memiliki transaksi, objek baru disertakan dalam transaksi saat ini. Jika tidak, COM+ memulai transaksi, menjadikan objek baru sebagai akar transaksi. Ini adalah pengaturan yang disukai untuk komponen yang melakukan aktivitas sumber daya karena membantu memberikan perlindungan transaksi untuk aktivitas tersebut.

Memerlukan Baru

Ketika Anda menetapkan nilai atribut ini, COM+ memastikan bahwa setiap objek yang dibuat dari komponen harus berpartisipasi dalam transaksi baru sebagai akar transaksi, terlepas dari status transaksi pemanggil. COM+ secara otomatis memulai transaksi baru yang berbeda dari transaksi pemanggil.

Catatan

COM+ tidak mendukung transaksi berlapis. Ketika satu objek transaksi memanggil komponen lain yang ditandai sebagai Memerlukan Baru, COM+ membuat batas transaksi independen untuk objek yang baru diaktifkan. Transaksi kedua tidak dapat memengaruhi transaksi pertama kecuali transaksi pertama secara eksplisit mencatat hasil transaksi kedua dan memodifikasi suaranya berdasarkan hasil tersebut.

Dependensi Atribut Transaksi

Tabel berikut menunjukkan karakteristik setiap nilai atribut transaksi COM+, termasuk efek nilai pada karakteristik transaksi. COM+ memberlakukan aktivasi dan Sinkronisasi JIT untuk semua komponen transaksi.

Nilai Atribut Transaksi Baru Transaksi Klien Akar Transaksi Aktivasi JIT Sinkronisasi
Nonaktif
Tidak pernah
Mungkin
Tidak pernah
Opsional
Opsional
Tidak Didukung
Tidak pernah
Tidak pernah
Tidak pernah
Opsional
Opsional
Didukung
Tidak pernah
Jika klien memiliki transaksi
Tidak pernah
Wajib
Diperlukan
Wajib
Mungkin
Jika klien memiliki transaksi
Jika klien tidak memiliki transaksi
Wajib
Wajib
Membutuhkan Baru
Selalu
Tidak pernah
Selalu
Wajib
Wajib

Batas Transaksi

Transaksi memiliki awal, akhir, dan terjadi tepat sekali. Selama eksekusinya, transaksi dapat memanggil sumber daya, seperti database atau antrean, untuk menyelesaikan satu atau beberapa tugas. Setiap sumber daya termasuk dalam batas transaksi. Semua sumber daya dalam batas transaksi, yang dapat mencakup beberapa proses dan batas komputer, berbagi satu transaksi. Mengelola konsistensi di seluruh proses dan batas komputer ini penting.

COM+ memastikan konsistensi dengan mengelola batas transaksi secara otomatis, berdasarkan nilai atribut transaksi yang Anda tetapkan untuk setiap komponen. Transaksi COM+ secara otomatis mengalir ke objek yang diinstruksikan untuk berpartisipasi dalam transaksi dan melewati objek yang diinstruksikan untuk dijalankan di luar transaksi. COM+ tidak mendukung transaksi berlapis. Sebaliknya, transaksi COM+ berbeda dan berumur pendek.

Objek pertama dalam batas transaksi khusus untuk transaksi dan disebut objek akar transaksi. Hanya ada satu objek akar dalam transaksi. Semua objek lain dalam hierarki transaksional di bawah objek akar disebut objek interior.

Transaksi Pemetaan

Salah satu cara untuk memastikan bahwa objek disertakan dalam batas transaksi yang benar adalah dengan memetakan transaksi Anda sebelum Anda mulai menulis komponen Anda. Dengan memetakan transaksi, Anda dapat menentukan pengaturan terbaik untuk setiap komponen yang Anda tulis. Semakin yakin Anda tentang bagaimana komponen Anda digunakan, semakin mudah untuk memilih nilai atribut transaksi yang benar.

Pada run time, COM+ melihat atribut transaksi untuk menentukan apakah objek harus menjadi akar transaksi baru, dibuat dalam transaksi yang ada, atau dibuat sebagai objek non-transaksional.

Ilustrasi berikut menunjukkan kemungkinan pemetaan transaksi. Dalam ilustrasi, klien membuat Objek 1, yang memerlukan transaksi. Karena tidak ada transaksi, COM+ membuat Transaksi 1 dan menempatkan Objek 1 di dalamnya sebagai objek akar. Objek 1 membuat Objek 2, yang mendukung transaksi dan oleh karena itu ditempatkan dalam Transaksi 1. Objek 2 membuat Objek 3, yang tidak mendukung transaksi dan oleh karena itu ditempatkan di luar semua transaksi. Objek 2 juga membuat Objek 4, yang memerlukan transaksi dan oleh karena itu ditempatkan dalam Transaksi 1. Objek 3 membuat Objek 5, yang mendukung transaksi. Namun, karena Objek 5 dibuat oleh objek yang tidak ada dalam transaksi, objek juga ditempatkan di luar semua transaksi. Objek 4 membuat Objek 6, yang memerlukan transaksi baru, sehingga COM+ membuat Transaksi 2 dan menempatkan Objek 6 di dalamnya sebagai objek akar. Objek 6 membuat Objek 7, yang mendukung transaksi dan oleh karena itu ditempatkan dalam Transaksi 2.

Diagram that shows a client interaction with Transaction 1 and Transaction 2.

Ilustrasi sebelumnya menunjukkan dua area potensi masalah. Pertama, sebagian besar pekerjaan dibagi antara dua transaksi yang berbeda. Jika Transaksi 1 gagal setelah Objek 4 membuat Objek 6, Transaksi 2 berjalan tidak terpengaruh oleh hasil Transaksi 1. Jika hasil ini tidak diinginkan, Anda mungkin lebih suka melipat operasi kedua transaksi menjadi satu transaksi, yang dapat Anda capai dengan mengubah atribut transaksi Objek 6 menjadi Diperlukan.

Ilustrasi pemetaan juga menunjukkan bahwa Objek 3 dan Objek 5 tidak transaksi, berjalan sepenuhnya di luar cakupan Transaksi 1 dan 2. Jika Objek 5 memperbarui data persisten, Anda mungkin ingin mempertimbangkan kembali status non-transaksi. Objek 5 dapat ditempatkan dalam transaksi dengan mengubah atribut transaksinya menjadi Diperlukan.

Mengatur Atribut Transaksi