Mendaftarkan Langganan Sementara
Langganan sementara meminta peristiwa untuk objek pelanggan tertentu yang sudah ada. Langganan sementara disimpan dalam katalog COM+, tetapi langganan dihapus jika sistem peristiwa atau sistem operasi dihentikan. Tidak seperti langganan persisten, langganan sementara terkait dengan objek tertentu dan hanya disimpan dalam sistem peristiwa. Jika ada masalah dengan sistem peristiwa atau sistem operasi, langganan akan hilang. Langganan sementara bisa lebih efisien daripada langganan persisten, tetapi Anda harus mengelola siklus hidup objeknya.
Langganan sementara tidak dapat diatur dengan menggunakan alat administrasi Layanan Komponen. Anda harus menggunakan antarmuka administratif COM+ untuk membuat atau memperbarui langganan sementara.
Visual Basic
Prosedur berikut menjelaskan cara membuat langganan sementara menggunakan Microsoft Visual Basic:
Tentukan langganan sebagai sementara dengan menambahkan entri baru ke koleksi TransientSubscriptions dan mengatur properti SubscriberInterface ke antarmuka IUnknown objek pelanggan. Peristiwa COM+ tidak membuat instans baru objek pelanggan saat menembakkan peristiwa tetapi sebaliknya menggunakan instans yang Anda tentukan. Peristiwa COM+ menyimpan jumlah referensi untuk objek pelanggan hingga langganan dihapus dari sistem.
Buat aplikasi server COM+ (.exe, .dll, atau file .ocx) dengan objek yang mengimplementasikan antarmuka atau metode yang ingin Anda berlangganan.
Buat langganan sementara Anda menggunakan kode berikut, dengan meneruskan CLSID objek kelas peristiwa dan instans objek pelanggan. Dengan menggunakan alat administratif Layanan Komponen, Anda bisa mendapatkan properti EventCLSID dengan mengklik kanan komponen COM+, memilih Properti, dan memilih tab Umum .
Public Function CreateTransientSubscription( _ ByVal clsid As String, ByVal objref As Object) As String Dim oCOMAdminCatalog As COMAdmin.COMAdminCatalog Dim oTSCol As COMAdminCatalogCollection Dim oSubscription As ICatalogObject Dim objvar As Variant On Error GoTo CreateTransientSubscriptionError Set oCOMAdminCatalog = CreateObject("COMAdmin.COMAdminCatalog") 'Gets the TransientSubscriptions collection Set oTSCol = oCOMAdminCatalog.GetCollection( _ "TransientSubscriptions") Set oSubscription = oTSCol.Add Set objvar = objref oSubscription.Value("SubscriberInterface") = objref oSubscription.Value("EventCLSID") = clsid oSubscription.Value("Name") = "TransientSubscription" oTSCol.SaveChanges CreateTransientSubscription = oSubscription.Value("ID") Set oSubscription = Nothing Set oTSCol = Nothing Set oCOMAdminCatalog = Nothing Set objvar = Nothing Exit Function CreateTransientSubscriptionError: CreateTransientSubscription = "" Err.Raise Err.Number, "[CreateTransientSubscription]" & _ Err.Source, Err.Description End Function
Contoh berikut menggambarkan cara memanggil fungsi CreateTransientSubscription untuk berlangganan antarmuka yang disebut IStockTicker, yang memiliki metode yang disebut UpdateStock.
Buat kelas peristiwa yang mendukung antarmuka IStockTicker, yang memiliki satu metode, UpdateStock.
Dalam proyek pelanggan Anda, tambahkan kelas yang mengimplementasikan antarmuka IStockTicker.
Saat Anda ingin berlangganan, jalankan kode berikut:
Dim oMyTicker As Object Dim sSubscriptionID As String Set oMyTicker = CreateObject("TheProject.CMyTicker") sSubscriptionID = CreateTransientSubscription( _ "{..CLSID for the Event Class..}", oMyTicker)
Fungsi CreateTransientSubscription mengembalikan string, yang merupakan GUID yang dapat digunakan sebagai handel atau cookie untuk mencabut langganan nanti. Untuk menghapus langganan, panggil metode Hapus COMAdminCatalogCollection pada koleksi TransientSubscriptions, meneruskan indeks yang sesuai dengan langganan dengan GUID yang sebelumnya diterima.
Topik terkait