Technologiebeispiel für Komponenten in einer Warteschlange
Aktualisiert: November 2007
In diesem Beispiel wird die Interaktion zwischen .NET-Anwendungen und der MSMQ-Technologie (Microsoft Message Queuing) sowie dem Feature Queued Components in COM+ veranschaulicht. Mit MSMQ können Anwendungen über Netzwerke und Systeme kommunizieren, die vorübergehend möglicherweise offline sind. Von sendenden Anwendungen generierte Meldungen werden in Warteschlangen gespeichert, sodass sie später von empfangenden Anwendungen abgerufen werden können. Das Feature Queued Components baut auf MSMQ auf und ermöglicht das asynchrone Aufrufen und Ausführen von Serverkomponenten.
Wichtiger Hinweis: |
---|
Um dieses Beispiel erstellen und ausführen zu können, muss auf dem Computer MSQM im Arbeitsgruppenmodus installiert sein. |
Informationen zum Verwenden der Beispiele finden Sie in folgenden Themen:
So erstellen Sie das Beispiel mithilfe der Eingabeaufforderung
Öffnen Sie ein Eingabeaufforderungsfenster, und navigieren Sie zu einem der sprachspezifischen Unterverzeichnisse unter dem Verzeichnis Technologies\ComponentServices\QueuedComponents.
Geben Sie je nach verwendeter Programmiersprache msbuild QueuedComponentsCS.sln oder msbuild QueuedComponentsVB.sln in der Befehlszeile ein.
So erstellen Sie das Beispiel mithilfe von Visual Studio
Öffnen Sie Windows Explorer, und navigieren Sie zu einem der sprachspezifischen Unterverzeichnisse unter dem Verzeichnis Technologies\ComponentServices\QueuedComponents.
Doppelklicken Sie je nach verwendeter Programmiersprache auf das Symbol für QueuedComponentsCS.sln oder QueuedComponentsVB.sln, um die Datei in Visual Studio zu öffnen.
Klicken Sie im Menü Erstellen auf Projektmappe erstellen.
So registrieren und installieren Sie die Assembly im GAC
Navigieren Sie zu dem Verzeichnis, das die erstellte Assembly enthält.
Geben Sie regsvcs QCDemoSvr.dll in der Befehlszeile ein, um die Assembly zu registrieren.
Geben Sie gacutil –i QCDemoSvr.dll in der Befehlszeile ein, um die Assembly im GAC zu installieren.
So führen Sie das Beispiel aus
Öffnen Sie ein Eingabeaufforderungsfenster oder Windows Explorer, und navigieren zu dem Verzeichnis, das die neue ausführbare Datei enthält.
Geben Sie QCDemo.exe in der Befehlszeile ein, oder starten Sie QCDemo.exe, indem Sie in Windows Explorer auf die Datei doppelklicken.
Klicken Sie auf die Schaltfläche mit der Bezeichnung Meldung aus Warteschlange senden. Ändern Sie den Zeichenfolgenwert im Texteingabefeld, und klicken Sie erneut auf Meldung aus Warteschlange senden. Auf diese Weise sollten zwei gepackte Methodenaufrufe in die Warteschlange eingefügt werden.
Untersuchen Sie die Meldungen in der QCDemoSvr-Warteschlange. Klicken Sie mit der rechten Maustaste auf Arbeitsplatz, und wählen Sie im Popupmenü Verwalten aus. Erweitern Sie in der Konsole Computerverwaltung den Knoten Dienste und Anwendungen\Nachrichtenwarteschlange\Öffentliche Warteschlangen. In diesem Knoten sollte eine Warteschlange mit der Bezeichnung qcdemosvr angezeigt werden. Der Name der Warteschlange entspricht dem Namen der COM+-Anwendung, die die in der Warteschlange stehende Komponente enthält. Diese Anwendung wird in einem späteren Schritt beschrieben.
Erweitern Sie qcdemosvr, und wählen Sie Warteschlangenmeldungen aus. Im Bereich auf der rechten Seite sollten zwei Meldungen angezeigt werden, die den beiden Methodenaufrufen der in der Warteschlange stehenden Komponenten entsprechen, die in der Clientanwendung ausgeführt wurden.
Starten Sie das Verwaltungstool Komponentendienste.
Suchen Sie die QCDemoSvr COM+-Anwendung, indem Sie den Knoten Komponentendienste\Computer\Arbeitsplatz\COM+-Anwendungen im linken Bereich des COM+-Explorer erweitern.
Klicken Sie mit der rechten Maustaste auf die QCDemoSvr-Anwendung, und wählen Sie im Popupmenü Starten aus. So wird die Serverkomponente aktiviert. Der Listener/Player liest die Meldung in der qcdemosvr-Warteschlange und ruft den Server auf. Daraufhin sollten zwei Meldungsfelder mit den Textzeichenfolgen aus den ursprünglichen Aufrufen von der Beispielclientanwendung angezeigt werden.
Wenn Sie zu der Konsole Computerverwaltung zurückkehren, stellen Sie fest, dass qcdemosvr keine in der Warteschlange stehende Meldungen mehr enthält. Nachfolgende Aufrufe von der Clientanwendung werden direkt an den Server übergeben, und bei jedem Klicken auf eine Schaltfläche werden sofort Meldungsfelder angezeigt.
Hinweis: Unter Windows 2000 müssen Sie die QCDemoSvr COM+-Anwendung herunterfahren (durch Klicken mit der rechten Maustaste auf die Anwendung im COM+-Explorer und Auswählen von Herunterfahren), um zu den Warteschlangenmeldungen zurückzukehren. Die ausführbare QCDemo-Clientdatei muss geschlossen werden, bevor die QCDemoSvr COM+-Anwendung heruntergefahren wird.
So deinstallieren Sie das Beispiel
Navigieren Sie zu dem Verzeichnis, in dem Sie msbuild.exe ausgeführt oder die SLN-Datei gestartet haben.
Geben Sie je nach verwendeter Programmiersprache an der Eingabeaufforderung msbuild.exe QueuedComponentsCS.sln /t:Clean oder msbuild.exe QueuedComponentsVB.sln /t:Clean ein. Diese Aktion ruft das .NET Services Installation-Tool (Regsvcs.exe) und das Global Assembly Cache-Tool (Gacutil.exe) mit dem /u-Schalter zum Entfernen der Beispieldateien aus dem COM+-Katalog und dem globalen Assemblycache auf.
Anforderungen
Plattform: Windows 2000, Windows XP, Windows Server 2003
.NET Framework-Version: 2.0, 1.1, 1.0
Hinweise
Weitere Informationen zum Erstellen von binären Beispieldateien und zu Registrierungsschritten finden in den Kommentaren in den Quellcodedateien.
Queued Components ist ein auf MSQM (Message Queuing Services) aufbauendes COM+-Feature, das eine Methode zum asynchronen Aufrufen und Ausführen von Komponenten bereitstellt. Wenn ein Client ein Objekt in einer Warteschlange aufruft, erfolgt der Aufruf in Wirklichkeit an einen Rekorder, der den Aufruf als Meldung packt und diese Meldung in die Warteschlange stellt. Ein Listener liest die Meldung in der Warteschlange und übergibt sie an den Player. Der Player führt die eigentlichen Methodenaufrufe des Serverobjekts aus. Die C#-Version des Komponentennamens, wie er im Verwaltungstool Komponentendienste angezeigt wird, lautet QCDemoServerCS.QComponent. Die Visual Basic-Version lautet QCDemoServerVB.QComponent.
Hinweis: |
---|
Sie müssen die QCDemoSvr.dll-Assembly registrieren, um die Meldungswarteschlange einzurichten und die Assembly im globalen Assemblycache (GAC) zu installieren. Das Installationstool für die .NET-Dienste (regsvcs.exe) befindet sich im Verzeichnis %Systemstamm%\Microsoft.Net\Framework\<Laufzeitversion> , und das globale Assemblycache-Tool (gacutil.exe) befindet sich im Verzeichnis \SDK\<Version>\Bin. |
Der Server muss aktiviert werden, um in der Warteschlange stehende Meldungen empfangen zu können. Serverkomponenten können manuell mithilfe der Skripterstellung und dem Taskplaner oder programmgesteuert aktiviert werden. In diesem Beispiel wird die Serverkomponente manuell aktiviert.
Das Beispiel besteht aus einer Clientanwendung und einem für InterfaceQueuing markierten verwalteten Objekt. Der Listener wird mittels eines Klassenattributs aktiviert. Beim Erstellen der Anwendung erstellt COM+ eine Warteschlange, deren Name mit dem der angegebenen COM+-Anwendung identisch ist.
Die Clientanwendung enthält eine einzelne Schaltfläche. Durch Klicken auf diese Schaltfläche wird der Rekorder für die in der Warteschlange stehende Komponente mittels eines Warteschlangenmonikers aufgerufen. Alle Aufrufe über den zurückgegebenen Verweis werden gepackt und in die entsprechende Meldungswarteschlange eingefügt.
In der Warteschlange befindliche Methodenaufrufe werden entpackt und für die eigentliche Serverkomponente bereitgestellt, wenn diese im Verwaltungstool Komponentendienste aktiviert wird. Der Beispielserver zeigt ein einfaches Meldungsfeld an, um anzuzeigen, dass der Aufruf den Server erreicht hat.
Siehe auch
Referenz
System.Runtime.InteropServices
Weitere Ressourcen
Erstellen von Komponentenwarteschlangen