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

Ö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
Bu makale arşivlenmiştir. "Olduğu gibi" sunulmaktadır ve bundan sonra güncelleştirilmeyecektir.
Ö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 ExplicitPublic Name As StringPublic Age As IntegerPublic Address As StringPrivate Sub Class_ReadProperties(PropBag As PropertyBag)    Name = PropBag.ReadProperty("Name")    Age = PropBag.ReadProperty("Age")    Address = PropBag.ReadProperty("Address")    MsgBox "Person read!!"End SubPrivate Sub Class_WriteProperties(PropBag As PropertyBag)    PropBag.WriteProperty "Name", Name    PropBag.WriteProperty "Age", Age    PropBag.WriteProperty "Address", Address    MsgBox "Person Written!!"End SubPrivate Sub Class_Initialize()    MsgBox "CCustomer Class_Initialize"End SubPrivate 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.
nesne parametresi bağımsız değişken QC ısrar MSMQ COM + sıraya alınmış

Uyarı: Bu makalenin çevirisi otomatik olarak yapılmıştır

Özellikler

Makale No: 246627 - Son İnceleme: 02/24/2014 00:36:17 - Düzeltme: 2.7

Microsoft Visual Studio 6.0 Enterprise Edition, Microsoft Visual Basic 6.0 Professional Edition, Microsoft Visual Basic Enterprise Edition for Windows 6.0

  • kbnosurvey kbarchive kbmt kbcomplusqc kbhowto KB246627 KbMttr
Geri bildirim