COM+ Operasi Administrasi Dalam Transaksi
Database pendaftaran COM+ (RegDB) adalah manajer sumber daya yang ditransaksikan yang dapat berpartisipasi dalam transaksi COM+. Ini memungkinkan Anda untuk melakukan operasi administrasi dalam transaksi dan memiliki semua perubahan konfigurasi yang diterapkan atau dibatalkan sebagai operasi atomik, bahkan di beberapa komputer. Dalam beberapa keadaan, sangat bermanfaat untuk melakukan ini, meskipun ada perilaku isolasi dan pemblokiran yang harus Anda perhitungkan, dan melakukan tugas administrasi dalam transaksi memang melibatkan sedikit perubahan pada model pemrograman administrasi normal.
Manfaat Melakukan Operasi Administrasi Dalam Transaksi
- **Konsistensi data—**Operasi administrasi yang dilakukan dalam transaksi dilakukan atau dibatalkan secara keseluruhan, meskipun ada beberapa sumber daya katalog COM+ non-transaksi yang mungkin tidak terjadi. (Lihat Sumber Daya Katalog COM+ Non-Transaksi di bawah ini.)
- **Penyebaran yang konsisten di beberapa komputer—**Jika Anda menyebarkan aplikasi COM+ di beberapa server, Anda dapat menjamin bahwa semua server dibiarkan dengan konfigurasi yang identik.
- **Penskalakan dan performa—**Saat Anda melakukan beberapa operasi dalam transaksi, semua penulisan ke RegDB dilakukan sekaligus. Penulisan persisten ke RegDB adalah operasi yang relatif mahal; jika Anda membuat banyak tulisan ke RegDB, Anda bisa mendapatkan manfaat performa besar dari melakukan semuanya sekaligus alih-alih setiap kali Anda memanggil SaveChanges.
Perilaku Isolasi RegDB
Untuk memastikan konsistensi data yang tepat dan transaksi yang dapat diserialisasikan, RegDB memberlakukan perilaku pemblokiran dan isolasi tertentu saat operasi administrasi dilakukan dalam transaksi.
Setiap kali komponen yang melakukan pekerjaan dalam transaksi memanggil metode apa pun yang akan menyebabkan penulisan ke katalog COM+—seperti SaveChanges, InstallApplication, atau InstallComponent—kunci penulis diambil pada kode server katalog COM+ yang akan memblokir penulis lain agar tidak masuk hingga transaksi saat ini diterapkan atau dibatalkan. Artinya, penulis dapat masuk hanya jika mereka memiliki afinitas transaksi yang benar dan berpartisipasi dalam transaksi saat ini.
Pembaca tidak diblokir. Namun, data yang dilihat pembaca tidak mencerminkan perubahan sementara yang dilakukan dalam transaksi sampai transaksi tersebut benar-benar dilakukan. Setiap komponen yang berpartisipasi dalam transaksi tersebut melihat status data sementara saat mereka membaca data, tetapi semua komponen di luar transaksi melihat perubahan tersebut hanya setelah transaksi selesai.
Perilaku SaveChanges
Untuk mencapai perilaku isolasi yang dijelaskan di atas, RegDB secara efektif menyediakan cache yang ditindaklanjuti oleh komponen dalam transaksi. Ini mengubah perilaku metode SaveChanges.
Biasanya, tanpa adanya transaksi, setiap perubahan yang tertunda ditulis ke katalog saat Anda memanggil SaveChanges, dan SaveChanges tidak kembali sampai semua penulisan selesai. Ini menjamin bahwa jika panggilan ke SaveChanges berhasil dikembalikan, Anda dapat memanggil StartApplication dan itu akan mengaktifkan aplikasi dengan data baru.
Namun, dalam transaksi, SaveChanges hanya memengaruhi cache, bukan RegDB itu sendiri, dan SaveChanges segera mengembalikan apakah semua perubahan telah diterapkan secara transaksional ke RegDB. Tidak ada jaminan bahwa StartApplication menggunakan data baru berikutnya ke SaveChanges yang kembali. Jika Anda perlu memanggil StartApplication dalam konteks ini, disarankan untuk menunggu beberapa periode waktu sebelum melakukannya.
Periode Batas Waktu Transaksi
Jika Anda melakukan banyak operasi administrasi dalam transaksi, itu mungkin transaksi yang berjalan lama. Dalam hal ini, nilai batas waktu transaksi dapat menjadi masalah. Ini ditentukan baik oleh nilai batas waktu transaksi yang ditetapkan untuk komponen yang memulai transaksi atau oleh pengaturan waktu habis di seluruh komputer untuk komputer tempat komponen tersebut berjalan. Jika Anda melakukan banyak operasi dalam transaksi, disarankan untuk mengatur periode batas waktu transaksi yang sesuai ke nilai yang cukup panjang dan, jika perlu, untuk memulihkan pengaturan asli ketika Anda selesai.
Sumber Daya Katalog COM+ Non-Transaksi
Registri, sistem file, dan Windows Installer (MSI) adalah sumber daya katalog COM+ yang tidak transaksional.
Catatan
Jika ada kesalahan yang membatalkan transaksi, perubahan pada sumber daya ini mungkin tidak digulung balik.
Jika ada kesalahan saat menginstal aplikasi COM+ yang ada dari file .msi, aplikasi tidak muncul di snap-in Layanan Komponen tetapi mungkin muncul di Tambahkan/Hapus program, dalam hal ini Anda perlu menghapusnya secara manual.
Pemulihan jika Sistem Macet
Jika komponen yang melakukan operasi administrasi dalam transaksi harus macet saat memegang kunci penulis pada kode server katalog, komponen tersebut akan memblokir semua orang lain untuk membuat perubahan apa pun pada katalog. Jika ini terjadi, Anda dapat menghapus kunci pada katalog dengan mematikan dan memulai ulang aplikasi Sistem.
Pembuatan skrip dengan Objek TransactionContext
Cara sederhana untuk melakukan operasi administrasi dalam transaksi adalah dengan menggunakan objek TransactionContext untuk mengontrol transaksi. Misalnya, skrip Visual Basic berikut menunjukkan cara menambahkan dua aplikasi baru secara transaksional sehingga kedua aplikasi atau tidak ada aplikasi yang dibuat:
Dim txctx
Dim cat
Dim apps
Dim app1
Dim app2
WScript.Echo "Starting"
Set txctx = CreateObject("TxCtx.TransactionContext")
Set cat = txctx.CreateInstance("COMAdmin.COMAdminCatalog")
Set apps = cat.GetCollection("Applications")
Set app1 = apps.Add
app1.Value("Name") = "Test App #1"
apps.SaveChanges
Set app2 = apps.Add
app2.Value("Name") = "Test App #2"
apps.SaveChanges
WScript.Echo "Ending"
txctx.Commit
Topik terkait
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk