Nesne parametreleri COM + PASS nasıl, kuyruğa atılmış bileşenler

Makale çevirileri Makale çevirileri
Makale numarası: 246627 - Bu makalenin geçerli olduğu ürünleri görün.
Bu makale arşivlenmiştir. "Olduğu gibi" sunulmaktadır ve bundan sonra güncelleştirilmeyecektir.
Hepsini aç | Hepsini kapa

Bu Sayfada

Özet

Microsoft Message Queue Server (MSMQ) üzerinden iletilen kaydedilir, nesne işlevlerini çağıran izin verir ve sonra sunucuda sıraya alınmış bileşen yapılandırıldığı replayed bileşenleri sıraya alındı. Bazı durumlarda, kaydedilen işlevlerinin parametrelerini nesneleri içerebilir. Kuyruğa atılmış bileşenler ile bunu yapabilirsiniz, ancak sunucu yöntemi çağrısı kayıttan yürütülürken yeniden bağımsız nesne için bazı kuralları izleyin:
  • Bir bağımsız değişken olarak geçirilen nesne ıpersiststream desteklemelidir. Visual Basic'te, bu "persistable" olarak işaretlenmeli ve Class_ReadProperties ve Class_WriteProperties işlevleri doğru uygulamalıdır.
  • Bir bağımsız değişken olarak geçirilen nesne sınıfı istemci bilgisayar ve sunucu bilgisayar üzerinde doğru kaydedilmelidir.
  • Yukarıdaki bağımsız olarak, kuyruğa atılmış olarak oluşturulan bileşen örneği parametre olarak için ikinci bir sıralanmış bileşen geçirilmesini.

Daha fazla bilgi

It nasıl çalışır?

Ne bir sıralanmış bileşen için bir çağrı yapıldı ve bu bağımsız değişken olarak geçirilen nesne gider?

Aşağıda bir örnek: Customer.CCustomer adlı müşteri bilgilerini yönetmek için kullandığınız nesnenin sahip olduğunu varsayın. Bu nesne Customer.dll dosyasında uygulanır ve aşağıdaki kodu vardır. Persistable'olarak işaretlenmiş unutmayın ve uygun yöntemleri uygulaması unutmayın:
'CCustomer Class. Marked as 'Persistable'
Option Explicit

Public Name As String
Public Age As Integer
Public Address As String

Private Sub Class_ReadProperties(PropBag As PropertyBag)
    Name = PropBag.ReadProperty("Name")
    Age = PropBag.ReadProperty("Age")
    Address = PropBag.ReadProperty("Address")
    MsgBox "Person read!!"
End Sub

Private Sub Class_WriteProperties(PropBag As PropertyBag)
    PropBag.WriteProperty "Name", Name
    PropBag.WriteProperty "Age", Age
    PropBag.WriteProperty "Address", Address
    MsgBox "Person Written!!"
End Sub

Private Sub Class_Initialize()
    MsgBox "CCustomer Class_Initialize"
End Sub

Private Sub Class_Terminate()
    MsgBox "CCustomer Class_Terminate"
End Sub
				
Bu örnek sınıf bilgileri dışında bir şey yapmaz. Gerçek dünyada senaryosunda, ancak, büyük olasılıkla diğer yöntemleri (ve hiçbir ileti kutularında class_ınitialize!) gerekir.

Şimdi sunucusu kullanmak üzere tasarlanmış bir nesne olduğunu düşünün. Bu nesne Orders.COrder adlı Orders.dll adlı ayrı bir dosya ve aşağıdaki kodu içeren bir işlevi vardır:
Public Sub AddOrder(ByVal ItemID As Long, ByVal Amount As Double, ByVal Customer As Customer.CCustomer)
    
    MsgBox "Customer order for item '" & ItemID & "' for " & Customer.Name
    
End Sub
				
Sipariş için müşteri bilgilerini doğrudan Customer.CCustomer türünde bir nesne olarak belirtilen unutmayın. Gerçek dünyada, büyük olasılıkla bu yöntemde, bazı veritabanı faaliyette terminalle. Ancak, bu örnekte tüm bunu, bir ileti kutusu yükseltin.

Ve son ancak az değil, istemci EXE uygulama. Bu sahip olan form ve aşağıdaki kodu yazın, bir komut düğmesi:
    Dim oOrder As COrder
    
    Dim oCust As CCustomer
    Set oCust = New CCustomer
    oCust.Name = "Eduardo A. Jezierski"
    oCust.Age = 23
    oCust.Address = "One Microsoft Way, Redmond, WA"
    
    Set oOrder = New COrder    
    oOrder.AddOrder 123, 100, oCust
    Set oOrder = Nothing
    
    Set oCust = Nothing
				
yer, bir COM + uygulamasına ekleme COM, siparişleri bileşeniniz yapılandırmış düşünüyor. Kullanıcı istemcide düğmesini tıklattığında, aşağıdakiler gerçekleşir:
  1. Bir CCustomer nesnesi (CCustomer class_ınitialize ileti kutusu yükseltme) oluşturduğunuz ve istemci tarafından doldurulan.
  2. Bir COrder nesnesi oluşturulur.
  3. COM + içinde AddOrder yöntemi yürütülür uygulama.
  4. "Order '123' için madde Eduardo A Jezierski için müşteri" söyleyen BIR ileti kutusu görünür.
  5. COrder örneği yok.
  6. CCustomer Sınıf_Terminate ileti kutusu getirme CCustomer örneği edilir.

Kuyruklardaki Getir

Kuyruğa atılmış bileşenler'ın getirin, bu nedenle şimdi neler?

Bunu sınamak için <a0></a0>, ilk COrder bileşeniniz kuyruğa atılmış olarak yapılandırın. Yönergeler için aşağıdaki Microsoft Knowledge Base makalesine bakın:
246825Nasıl bir COM + uygulaması kuyruğa atılmış bileşenler için yapılandırma
Sonra istemci uygulaması, oluşturulmuş bileşenler sıraya şekilde değiştirin. Bunu yapmak için <a0></a0>, aşağıdaki gibi olması için COrder oluşturulduğu satırı değiştirme:
Set o = GetObject("queue:/new:Orders.COrder")
				
bu etkin bir şekilde, yöntem çağrıları kaydeder ve bunları kendi COM + uygulamasında oturmak COrder nesnesine gönderme bir "stand-in" COrder nesnesi verir.

Uygulama geri kalanı aynı kalır. Ancak, sınarken, bir çok farklı olayları oluşur:
  1. Öncelikle, bir müşteri nesnesi oluşturulur ve istemci tarafından doldurulan.
  2. Bir COrder kuyruğa atılmış Kaydedici örneği ile bir belirtilen ad GetObject işlevi kullanılarak oluşturulur.
  3. AddOrder yöntemi ça?r?l?r. Kendi Class_WriteProperties alır müşteri nesnesinde bir COrder behaving QC Kaydedici götüren durumuna kalıcıdır, diğer tüm parametreleri ile birlikte (ItemID ve tutar), işlev olarak adlandırılır.
  4. Örnek COrder Kaydedici bir şey ayarlanır. En bu nokta, tüm istemci güvenlik belirteci ve diğer bilgileri ile birlikte (yalnızca bu durumda AddOrder) üzerindeki çağrılan çağrıları dolu Microsoft Message Queue Server (MSMQ) iletide duyarlılığın etkin olmasını ve hedefe gönderilen devre dışı.
  5. Istemci, iş tamamlanmış, müşteri örneği yok eder ve çalışmasını tamamlanır.

    Meanwhile...

  6. Ileti gönderildikten sonra onu hedeflenen uygulamanın sıranın sonunda eriştiği varsayalım.
  7. Uygulama "iletilerini dinlemek için <a0></a0>" ayarlandığı için MSMQ ileti gelişini algılar ve bir COrder için ait olduğu numarada X kullanıcı tarafından kullanılan sınıf. Sonra erişim yapmak denetimleri, sunucu üzerinde bir COrder örneği oluşturur.
  8. Şimdi Öykü "kayıttan yürütme" bölümünü başlar. QC Yürütücü yöntemleri çağırmadan, iletide depolanan kayıt başlatır.
  9. Bu durumda, yalnızca AddOrder yöntemdir. Ancak parametreleri, bir müşteri nesnesi eklemek için önce CCustomer bir kopyası oluşturulur ve "kendisi ile Class_ReadProperties yüklemek için <a0></a0>" yönlendirilmiş işlevi.
  10. Örnek yüklendiğinde bir kez, kurtarır yapar böylece oyuncu gerçekten gerçek COrder nesnesinde AddOrder yöntemini çağırır. Yeni müşteri örnek çağrı bağımsız değişken olarak programa aktarır ve arama tamamlandığında, bu geçici örneği yok eder. Tüm diğer kaydedilmiş aramaları benzer biçimde'ı başlatır ve sonra geçici CCustomer örnekleri ve COrder nesne serbest bırakır.
Bunun, kullanıyordu müşteri örneği olmadan yürütülen COrder kodunuzu gerçekten kendisi, istemci, belki dakika veya saat önce saklanan müşteri nesnesinin bir kopyas?n? yerel ve farklı oldu. Bu şekilde, tüm zaman uyumsuz modeli olarak saklanır.

Özellikler

Makale numarası: 246627 - Last Review: 24 Şubat 2014 Pazartesi - Gözden geçirme: 2.7
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Visual Studio 6.0 Enterprise Edition
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0
Anahtar Kelimeler: 
kbnosurvey kbarchive kbmt kbcomplusqc kbhowto KB246627 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:246627

Geri Bildirim Ver

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com