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

Menangani Kesalahan Administrasi COM+

Contoh Pengantar Menggunakan Katalog Administrasi COM+

Gambaran Umum Objek COMAdmin

Mengambil Koleksi pada Katalog COM+

Mengatur Properti dan Menyimpan Perubahan ke Katalog COM+