Jak PASS objekty jako parametry do COM + Queued Components

Překlady článku Překlady článku
ID článku: 246627 - Produkty, které se vztahují k tomuto článku.
Tento článek byl archivován. Je nabízen v takovém stavu, v jakém je, a nebude již nadále aktualizován.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

Souhrn

Ve frontě součásti umožňují volat funkce objektu budou zaznamenány, předán přes Microsoft Message Queue Server (MSMQ) a přehrány na serveru, kde je nakonfigurován komponenty ve frontě. V některých případech mohou obsahovat parametry funkce zaznamenávány objekty. To lze provést pomocí komponent ve frontě, ale pro mít argument objekt znovu vytvořen při volání metody je přehrát na serveru je třeba dodržovat určitá pravidla:
  • Objekt předávaný jako argument musí podporovat rozhraní IPersistStream. V aplikaci Visual Basic ji musí být označeny jako "trvalý" a musí implementovat funkce Class_ReadProperties a Class_WriteProperties správně.
  • Třída objektu předávaný jako argument musí být správně registrován v klientském počítači i v počítači serveru.
  • Nezávisle výše instance komponenty vytvořeny jako ve frontě může být předán jako parametr druhé komponenty ve frontě.

Další informace

Princip IT

Co přejde na při volání je provedené komponenty ve frontě a objekt je předáno jako argument?

Zde je příklad: Předpokládejme, že máte objekt použít ke správě informací o zákaznících nazývá Customer.CCustomer. Tento objekt je implementována v souboru Customer.dll a má následující kód. Všimněte si, že je označena jako trvalý a poznamenejte si jeho implementace příslušné metody:
'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
				
tento ukázkový třídy neprovede žádnou akci kromě informace mezipaměti. V případě reálného světa však by pravděpodobně máte jiných metod (a žádná zpráva políček v Class_Initialize!).

Nyní si představte, že je objekt, který je určen pro použití serveru. Tento objekt volána Orders.COrder, je v samostatném souboru Orders.dll nazývá a má funkci s následujícím kódem:
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
				
Poznámka: informace o odběrateli pro objednávku přímo zadaný jako objekt typu Customer.CCustomer. V reálném světě, by se pravděpodobně zapojit v některé databáze činnosti v této metodě. V tomto vzorku všechny provedete je však zvýšit zprávou.

A poslední ale není nejméně je klient aplikace EXE. Všechny nemá tento je formulář a příkazové tlačítko, ve kterém zadejte následující kód:
    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
				
Say říci? nakonfigurován součást objednávky uvnitř aplikace COM +, přidání do aplikace COM +. Pokud uživatel klepne na tlačítko na klienta, se stane následující položky:
  1. CCustomer objektu je vytvořena (zvýšení CCustomer Class_Initialize zprávou) a naplněn klienta.
  2. Je vytvořen objekt COrder.
  3. Metoda AddOrder provedeny v COM + aplikace.
  4. Zobrazí se okno se zprávou oznamující "Zákazník objednávku pro položku '123 Eduardo A. Jezierski".
  5. Instance COrder zničen.
  6. Instance CCustomer zničen, uvedením nahoru zprávou CCustomer Class_Terminate.

Přenést fronty

Takže co se stane nyní přenést na Queued Components?

Tento test nejprve nakonfigurovat součást COrder jako ve frontě. Naleznete v následujícím článku znalostní báze Microsoft Knowledge Base pokyny:
246825Postup konfigurace aplikace COM + Queued Components
Dále upravit aplikace klienta tak, aby vytvořili součásti jsou ve frontě. Změňte řádek, kde je vytvořena COrder být způsobem:
Set o = GetObject("queue:/new:Orders.COrder")
				
to bude efektivně umožňují objekt COrder "stand-in", bude záznam volání metody a bude jim odeslat objekt COrder sedící aplikace COM +.

Zbytek aplikace zůstane stejné. Při testování, však dochází velmi odlišnou sadu událostí:
  1. Objekt zákazníka je nejprve vytvořen a naplněn klienta.
  2. Instance COrder záznam ve frontě je vytvořena pomocí funkce GetObject s zadaný zástupný název.
  3. Vyvolat metodu AddOrder. Záznam QC pracují jako COrder, trvá v objektu zákazníka, který získá jeho Class_WriteProperties funkce volána tak, aby trvala stavu, společně s všechny ostatní parametry (ItemID a částka).
  4. Instance COrder záznam je nastavena na nic. Na tento bod všechna volání vyvolána na ni (stejně AddOrder v tomto případě) jsou baleny společně s token zabezpečení klienta a dalších informací zalomený zpráva Message Queue Server (MSMQ) a odeslán cíl.
  5. Jeho úlohu nutnosti dokončené, klient zničí instance odběratele a dokončení jeho práce.

    Meanwhile...

  6. Po odeslání zprávy předpokládají, že nakonec dosáhne fronty zamýšlené aplikace.
  7. Protože aplikace byla nastavena na "naslouchání" pro zprávy, zjistí příchodu zprávy MSMQ a hodnoty jej patří COrder třída používá uživatel X. Po provedení přístup zkontroluje vytvoří instanci COrder na serveru.
  8. Nyní začne "přehrávání" část textu. Přehrávač QC spustí vyvolání metody zapisovací uloženy ve zprávě.
  9. V tomto případě je právě metoda AddOrder. Však, protože parametry zahrnout objekt zákazníka, nejprve vytvořit instanci CCustomer a přesměrován "načtení" samotný prostřednictvím Class_ReadProperties funkce.
  10. Po načtení instance přehrávač skutečně vyvolá metodu AddOrder na skutečné COrder objektu tak, aby se jeho chores. Předává nové instance zákazníka jako argumentu volání a po dokončení volání zničí této dočasné instance. Vyvolá jakékoli jiné nahrané volání podobným způsobem a uvolní objekt COrder a dočasné instance CCustomer.
Váš kód COrder provedeny bez provádějící, že instance odběratele jej byl pomocí byl skutečně místní a jiné instance objektu zákazníka, které sám uloženy v klienta, možná minut nebo hodinami. Tímto způsobem je zachována celé asynchronní model.

Vlastnosti

ID článku: 246627 - Poslední aktualizace: 28. února 2014 - Revize: 2.7
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft Visual Studio 6.0 Enterprise Edition
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0
Klíčová slova: 
kbnosurvey kbarchive kbmt kbcomplusqc kbhowto KB246627 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:246627

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