Sdílet prostřednictvím


QStat-Beispiel: Wrapperfunktion für ein COM-Objekt zum Verfügbar machen von Geschäftslogik

Aktualisiert: November 2007

Das QStat-Beispiel veranschaulicht die Erstellung einer DLL, die den Zugriff auf ein COM-Objekt in einem Wrapper einschließt und seine Funktionalität für .NET Framework-Clients verfügbar macht.

800dt86w.alert_security(de-de,VS.90).gifSicherheitshinweis:

Dieser Beispielcode dient dazu, ein Konzept zu veranschaulichen. Er sollte nicht für Anwendungen oder Websites verwendet werden, da dieser Code unter Umständen nicht die sicherste Codierungstechnik darstellt. Microsoft übernimmt keine Haftung für beiläufig entstandene Schäden oder Folgeschäden, falls der Beispielcode nicht bestimmungsgemäß verwendet wird.

So rufen Sie Beispiele und Anweisungen für ihre Installation ab

  • Klicken Sie in Visual Studio im Menü Hilfe auf Beispiele.

    Weitere Informationen finden Sie unter Suchen von Beispieldateien.

  • Die neueste Version und vollständige Liste mit Beispielen ist online unter Visual Studio 2008 Samples verfügbar.

  • Sie können auch Beispiele auf der Festplatte des Computers suchen. Standardmäßig werden Beispiele und eine Infodatei in einen Ordner unter \Programme\Visual Studio 9.0\Samples\ kopiert. Für Express Editions von Visual Studio sind alle Beispiele online verfügbar.

Erstellen und Ausführen des Beispiels

So erstellen Sie das Beispiel

  1. Laden Sie in der Visual Studio-IDE die Projektmappendatei QStat.sln.

  2. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf die Projektmappe QStat.

  3. Klicken Sie im Kontextmenü auf Projektmappe erstellen.

So führen Sie das Beispiel aus

  1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt netClient.

  2. Klicken Sie im Menü Debuggen auf Starten.

Wenn die Clients einmal gestartet wurden, wird eine Reihe von Meldungen in der Konsole angezeigt, in denen Sie über Aufrufe an die Geschäftslogik benachrichtigt werden.

800dt86w.alert_note(de-de,VS.90).gifHinweis:

Wenn Sie mehr über die Interaktion zwischen Komponenten erfahren möchten, können Sie den Code durchgehen, indem Sie entweder Haltepunkte festlegen oder den Beispielcode mithilfe des Menüs Debuggen in Einzel- oder Prozedurschritten ausführen.

Projektbeschreibung

Im Mittelpunkt dieses Beispiels steht nicht die Implementierung der Geschäftslogik an sich, sondern der Zugriff auf die Geschäftslogik durch COM- und .NET Framework-Clients. Aus diesem Grund ist die Geschäftslogik relativ uninteressant. Tatsächlich arbeitet die Geschäftslogik in diesem Fall mit einfacher Arithmetik (Berechnungen des geometrischen, harmonischen und quadratischen Mittels) und gibt das Ergebnis an den Client zurück.

Es gilt als guter Programmierstil, die Geschäftslogik von dem durch sie verfügbar gemachten Gerüst zu trennen (in diesem Fall COM). In diesem Beispiel wird jedoch davon ausgegangen, dass die Geschäftslogik direkt im zu verwendenden COM-Objekt implementiert wurde und dass ein Zugriff auf die zugrunde liegende Geschäftslogik nur durch dieses COM-Objekt möglich ist.

Das Beispiel erstellt eine Wrapper-DLL, die das COM-Objekt über #import verbraucht, und stellt eine von .NET Framework-Clients genutzte .NET Framework-Klasse bereit. Dies wird durch die Definition einer systemeigenen C++-Klasse (nativeMeanCalc) erreicht, die einen über #import importierten COM-Datenmember für einen intelligenten Zeiger enthält. Es wird eine .NET Framework-Klasse mit einem Zeiger definiert, der auf die systemeigene C++-Klasse verweist. Die .NET Framework-Klasse netMeanCalc enthält einen Zeiger, der auf ein nativeMeanCalc-Objekt zur Vervollständigung des Zugangswegs zum COM-Zielobjekt verweist. netMeanCalc ist die öffentliche Klasse, die von .NET Framework-Clients genutzt wird.

Grundsätzlich gibt es zwei Clientprojekte:

  • nativeClient ist ein in systemeigenem C++ implementierter COM-Client.

  • netClient wurde mit der neuen Syntax für C++ geschrieben.

Klassen und Schlüsselwörter

Dieses Beispiel demonstriert die Verwendung der folgenden Schlüsselwörter:

__gc; #using; #import; try; catch; _com_error, Console::WriteLine

Siehe auch

Weitere Ressourcen

Interoperabilitätsbeispiele