Probe des Komponentenobjektmodells (COM)
COM ist eine sehr leistungsstarke Technologie, um Software basierend auf objektorientiertem Design zu kontrollieren. Weitere Informationen finden Sie in der Dokumentation hier.
Einer der Hauptnachteile von COM ist die anfängliche Kesselplatte, die zum Einrichten der COM -Komponenten erforderlich ist. ATL ist eine Reihe von Bibliotheken, die dazu beitragen, die Kesselplatte aufzubauen, aber mit eigener Komplexität verfügt.
Dieses Beispiel hier bietet den Skelettcode, der das heftige COM -Setup und die Registrierung durchführen würde, damit sich Entwickler allein auf die Geschäftslogik konzentrieren können, anstatt sich um die Infrastruktur zu sorgen. Es verwendet ATL nicht . Stattdessen verwendet es einen einfachen C ++ - Code, damit Entwickler das zugrunde liegende Skelett bei Bedarf verstehen und debuggen können.
Begriffe verwendet
- Ein COM -Server ist ein Objekt, das die Geschäftslogik bereitstellt.
- Ein COM -Client ist der Code, der über eine vom COM -Server aufgeführte Schnittstelle auf den COM -Server zugreift.
- Die Interaktion zwischen dem COM-Client und dem COM-Server erfolgt über das Marshaling und erfordert eine Proxy-Stub-DLL.
- Weitere Informationen finden Sie in der Dokumentation hier.
Dieses Projekt
Hier ist die Zusammenfassung der verschiedenen Verzeichnisse in dieser Stichprobe.
- ComSampleProxy : Proxystub DLL. Um eine neue Schnittstelle hinzuzufügen, fügen Sie einfach eine neue IDL -Datei zum Projekt hinzu.
- COMSAMPLESERVER : Unterstützung für die Aktivierung des COM-Server-In-Prozesss sowie außerhalb des Verfahrens (in einem Betriebssystem bereitgestellt DLL-Ersatz, nämlich dllhost.exe).
- COMSAMPLEService : Unterstützung für die Aktivierung des COM -Servers in einem LocalSystem -Dienst.
- Comsampeclient : Ein Beispiel -COM -Client, der die oben genannten COM -Server aufruft und testet.
Erstellen und Registrieren einer neuen COM -Komponente
Das Erstellen einer neuen COM -Komponente ist mit diesem Modell super einfach.
- Fügen Sie Ihre Schnittstelle hinzu :
- Fügen Sie eine neue IDL -Datei mit Ihrer Schnittstelle zum ComSampleProxy -Projekt hinzu. Siehe Beispieldatei /comsampleProxy/icomtest.idl.
- Implementieren Sie Ihre COM -Klasse :
- Für die In-Process-Aktivierung oder zur Ausarbeitung in der Ersatzaktivierung : Fügen Sie Ihre Klassenimplementierung zum Comsamplesserver-Projekt hinzu. Siehe Beispiel comsamplesserver/ccomServertest.cpp. Gehen Sie nun zu Comsamplesserver/dll.cpp und fügen Sie einfach Ihre Klasseneinträge zu "g_classes" hinzu.
- Für die Aktivierung außerhalb der Prozessanlage in einem Lokalsystem-Service : Fügen Sie Ihre Klassenimplementierung zum ComsampleService-Projekt hinzu. Siehe Beispiel comsampleService/ccomServicetest.cpp. Gehen Sie nun zu ComsampleService/Main.cpp und fügen Sie einfach Ihre Klasseneinträge zu "g_classes" hinzu.
- Registrieren Sie Ihre COM -Komponenten :
- Kopieren Sie complampleProxy.dll auf Ihre Zielmaschine. Aus einer erhöhten Eingabeaufforderung, laufen Sie: regsvr32 comsampleProxy.dll .
- Für In-Process-Aktivierung oder außerhalb der Prozessaktivierung in der Ersatzaktivierung : COMSAMPLESERVER.DLL auf Ihre Zielmaschine kopieren. Aus einer erhöhten Eingabeaufforderung, laufen Sie: Regsvr32 comsamplserver.dll .
- Für die Aktivierung außerhalb der Prozesse in einem Local-System-Service : COMSAMPLEService.exe auf Ihre Zielmaschine kopieren. Aus einer erhöhten Eingabeaufforderung: comsampleService.exe /registerver .
Das ist es!
Marken
Dieses Projekt kann Marken oder Logos für Projekte, Produkte oder Dienstleistungen enthalten. Die autorisierte Verwendung von Microsoft -Marken oder -Logos unterliegt den Marken- und Markenrichtlinien von der Marken- und Markenmarke. Die Verwendung von Microsoft -Marken oder Logos in geänderten Versionen dieses Projekts darf keine Verwirrung verursachen oder Microsoft -Sponsoring implizieren. Jede Verwendung von Marken oder Logos von Drittanbietern unterliegt den Richtlinien dieses Drittanbieters.