Bagikan melalui


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:

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

  2. Buat aplikasi server COM+ (.exe, .dll, atau file .ocx) dengan objek yang mengimplementasikan antarmuka atau metode yang ingin Anda berlangganan.

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

  1. Buat kelas peristiwa yang mendukung antarmuka IStockTicker, yang memiliki satu metode, UpdateStock.

  2. Dalam proyek pelanggan Anda, tambahkan kelas yang mengimplementasikan antarmuka IStockTicker.

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

Mendaftarkan Langganan