|
Das Component Object Model (COM) Wenn eine .NET-Software auf Anwendungen bzw. Objekte zugreifen will, die nicht innerhalb des .NET Frameworks programmiert wurden (z.B. die MS Office Anwendungen), werden Technologien aus der DNA-Architektur benötigt. Die COM-Technologie (Component Object Model) wurde für diese Interaktion von Komponenten der Windows DNA-Welt konzipiert, indem sie einheitliche Definitionen für Schnittstellen, Datentypen und die Kommunikation dieser Komponenten zur Verfügung stellt. Mit der Einführung von COM-Komponenten ermöglicht MS das Anbieten von Funktionalität einer Applikation an beispielsweise Skript- bzw. Makrosprachen wie VBA (Visual Basic for Applications). Mit Hilfe von Automatisierung, die Bestandteil der COM-Technologie ist, können integrierte Office-Lösungen erstellt werden. Die Automatisierung ermöglicht das Steuern von Anwendungen, deren Funktionalität über definierte Schnittstellen nach Außen zur Verfügung gestellt wird. Im Zusammenhang mit Automatisierung und Programmierung von MS Office-Programmen spielt der Begriff ActiveX eine wichtige Rolle. ActiveX-Steuerelemente stellen wieder verwendbare Softwarekomponenten dar, die auf der COM-Technologie basieren und als Bezeichnung für automatisierbare COM-Objekte benutzt werden. Sie sind also nichts anderes als steuerbare COM-Objekte, die entweder als ausführbare Programme (Exe-Dateien) oder Klassenbibliotheken (DLL-Dateien) vorliegen. Heute ist die gesamte Funktionalität der Office-Applikationen in ActiveX-Komponenten gekapselt, die mit jeder COM-fähigen Programmiersprache ferngesteuert werden können. Für die Verwendung bzw. Automatisierung dieser Anwendungen aus einem .NET-Objekt heraus ist es nötig, dass .NET-Code eine Schnittstelle zu dem entsprechenden COM-Objekt herstellen kann. Obwohl sowohl COM als auch .NET Technologien von Microsoft sind, ist ein Zusammenspiel bzw. eine Kommunikation (Interoperabilität) zwischen COM-basierten Code und verwaltetem Code oftmals schwierig, vor allem wenn komplexe Typen im Einsatz sind. Der Schlüssel für die Verwendung von COM-Objekten in .NET-Code liegt in den Klassen System.Runtime.InteropServices der CLR. Diese Klassen ermöglichen, dass verwalteter Code COM-basierten Code als verwaltete Typen zu sehen bekommt. Hier stellt das .NET-Framework einen so genannten Runtime Callable Wrapper zur Verfügung, der das Aufrufen und Zugreifen auf ein COM-Objekt erlaubt. 
Für das Aufrufen der Funktionen bzw. Eigenschaften von Office-Anwendungen muss eine sog. Interop-Assembly aufgerufen werden. Diese bildet die oben beschriebene Wrapper-Klasse, die es verwaltetem Code ermöglicht, mit dem COM-Objektmodell einer Office-Anwendung zu interagieren. Enthält die Interop-Assembly die offizielle Beschreibung der COM-Typen, wie sie vom Herausgeber der Typbibliothek festgelegt wurde, so spricht man von einer primären Interop-Assembly. Damit kann eine .NET-Anwendung, die Zugriff auf das COM-Objekt von Word hat, sämtliche Methoden und Eigenschaften von MS Word aufrufen bzw. beeinflussen.
|