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.
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.