Microsofts Technologie für die Entwicklung und Nutzung
objektorientierter Softwarekomponenten heißt Component Object Model (COM).
COM definiert den Aufbau und die Benutzung von Komponenten.
Zumindest innerhalb der Windows-Welt ist COM ein
erfolgreicher Ansatz: COM ist existenzieller Bestandteil aller
32-Bit-Windows-Betriebssysteme. COM wird nicht nur von zahlreichen
Anwendungen, sondern auch von Windows selbst genutzt. So beruht auch das
Active Scripting (alias Windows Scripting) auf COM-Komponenten.
Diese Kapitel erklärt nur die wichtigsten (Ober-)begriffe
von COM. Eine detaillierte Einführung in COM erhalten Sie in
Kapitel 2 (Theorie) und
Kapitel 3 (Praxis). Grundlagen zum
Thema objektorientierte Softwarekomponenten erläutert der Anhang A.
Durch die Fachwelt geistert im Zusammenhang mit COM bzw.
anstelle des Begriffs COM eine Reihe von weiteren Namen, wobei die
MarketingMaschinerie von Microsoft selbst einen großen Teil zur Verwirrung
beigetragen hat.
Häufig stellt sich die Frage, was überhaupt der
Oberbegriff ist: COM, DCOM oder ActiveX? Der Autor dieses Buches verwendet
stets COM als Oberbegriff. Die Nachwehen der ActiveX-Manie sind aber
noch in vielen Bereichen spürbar und lassen sich nicht so leicht aus der
Fachwelt entfernen. So würde der Autor lieber von COM Scripting als von
Active Scripting sprechen, beugt sich aber in diesem Fall der üblichen
Sprechweise.
Component
Object Model (COM)
Der Begriff Component Object Model (COM) umfasst zwei
unterschiedliche Aspekte:
·
COM-Spezifikation: Die COM-Spezifikation ist die
schriftliche Niederlegung des Aufbaus von COM-Komponenten und der von COM
angebotenen Komponentendienste.
·
COM-Implementierung: Anders als der Urheber der
OMG-Komponentenarchitektur CORBA liefert Microsoft mit der Spezifikation
bei COM auch eine passende Implementierung zu dieser Spezifikation. Die
COM-Implementierung liegt in Form der sogenannten COM-Bibliothek
für alle 32-Bit-Windows-Betriebssysteme vor. Das Herzstück der COM-Bibliothek
bildet eine DLL, die aus historischen Gründen
ole32.dll heißt. Diese
Bibliothek wird auch das COM API genannt.
Wenn jemand von einem COM API
spricht, dann meint er damit nicht das in
ole32.dll implementierte COM
API, sondern eine COM-Komponente. Das ist verwirrend. Vermeiden Sie also
bitte, eine Komponente so zu nennen. |
Object Linking
and Embedding (OLE)
OLE ist eine Technologie zur Erzeugung von Compound
Documents, d.h. von Dokumenten, die aus Bausteinen mehrerer Anwendungen
bestehen. Die bereits Anfang der 90er Jahre entwickelte OLE-Technologie ist
Basis für COM gewesen. Heute ist OLE in Form der ActiveX-Technologie (s.u.)
ein Teil von COM.
Distributed
Component Object Model (DCOM)
DCOM ist die Middleware zu COM. DCOM erweitert COM um die
Netzwerkfähigkeit, also die rechnerübergreifende Benutzung der COM-Komponenten
in einem verteilten System.
ActiveX
Microsoft hat den Begriff ActiveX seit 1996 so sehr in
den Vordergrund gestellt, dass er schließlich mit COM gleichgesetzt wurde.
Erst im Laufe der Jahre 1998 und 1999 fand eine Rückbesinnung statt, die
schließlich zur Einschränkung von ActiveX auf einen Dienst von COM führte.
Microsoft definiert in einem Beitrag in der Knowledge Base (»Description of
ActiveX Technologies«, [Q154544], Stand August 1999) ActiveX über folgende
Teiltechnologien:
ActiveX-Steuerelemente (früher
OLE-Steuerelemente oder OCX-Steuerelemente) sind visuelle COM-Komponenten zur
Gestaltung von Benutzeroberflächen. Diese Steuerelemente werden in ActiveX
Control Hosts platziert. Es gibt jedoch eine spezielle Form von
Steuerelementen, sogenannte Design Time Controls (DTC), die, wie
der Name schon sagt, nur zur Entwurfszeit Steuerelemente sind. Während der
Programmausführung sind sie innerhalb des ActiveX Containers nicht sichtbar.
Beispiele dafür sind das Winsock-Steuerelement (MSWinsockLib,
mswinsck.ocx) und das
Skript-Steuerelement (MSScriptControlCtl,
msscript.ocx). Einige
Steuerelemente (z.B. das Winsock-Steuerelement) können zudem auch ganz
unabhängig von einem ActiveX Container genutzt werden. Diese Steuerelemente
lassen sich auch wie normale nichtvisuelle Komponenten instanziieren und per
Programmcode steuern.
ActiveX-Dokumente sind Dokumente, die aus
verschiedenen, aus unterschiedlichen Anwendungen stammenden Teildokumenten
bestehen können. Dabei können die Teildokumente innerhalb der Host-Anwendung
des Gesamtdokuments bearbeitet werden. ActiveX-Dokumente verwenden Sie, wenn
Sie eine eingebettete Excel-Tabelle in einem Word-Dokument bearbeiten. Früher
hieß diese Technik Object Linking and Embedding (OLE) bzw.
Vor-Ort-Aktivierung. Ein ActiveX Document Host ist eine Umgebung,
die ActiveX-Dokumente anzeigen kann. Ein Beispiel für einen Document Host ist
der Internet Explorer.
ActiveX Container ist der
Oberbegriff über ActiveX Control Host und ActiveX Document Host.
Immer wieder verwenden Microsoft und andere Quellen den
Begriff ActiveX synonym zu COM-Automation. Demnach wäre eine
automationsfähige Komponente eine ActiveX-Komponente. So erklärt sich
zumindest der Name Active Scripting (auch: ActiveX Scripting).
Active Scripting basiert auf automationsfähigen Komponenten.
Es ist auch nicht korrekt, ActiveX auf eine
»Spezifikation zur Benutzung von COM-Objekten über das Internet« (z.B. wie in
[RED97], S. 4) zu reduzieren, da ActiveX auch außerhalb des Internets
eingesetzt wird (z.B. die ActiveX-Steuerelemente in Windows-Fenstern).
COM+
Mit Windows2000 hat Microsoft neue COM-Dienste ausgeliefert,
die COM erweitern. Man kann sich darüber streiten, ob COM+ nur diese neuen
Dienste umfasst oder als neuer Oberbegriff über alle COM-Technologien
anzusehen ist.
Distributed
interNet Application Architecture
Die Distributed interNet Application Architecture (DNA)
ist ein Softwarearchitekturmodell für mehrschichtige Anwendungen. DNA
verwendet COM bzw. COM+ und Web-Scripting-Technologien (Active Server Pages und
Dynamic HTML).
Die folgenden Abschnitte beschreiben kurz wesentliche
Eigenschaften von COM.
Binärstandard
COM unfasst einen Binärstandard für Komponenten und ist
daher programmiersprachenunabhängig. Es sind inzwischen viele Sprachen (z.B.
C++, C, Java, Visual Basic, Delphi) verfügbar, die COM-Komponenten nutzen und
erzeugen können.
Objektorientierung
COM ist ein objektorientiertes Komponentenmodell, das mit
Konzepten wie Klassen, Schnittstellen, Attributen und Methoden arbeitet. Die
Klassen sind in der Regel in hierarchischen Objektmodellen angeordnet. Für den
Nutzer der Komponente (den sogenannten COM-Client)
ist die Komponente (der sogenannte COM-Server)
eine Klassenbibliothek.
Integration in
Windows
COM ist stark in das Windows-Betriebssytem integriert.
COM verwendet zum Beispiel die Windows-Sicherheit und die Windows-Registry als
Konfigurationsspeicher.
Verteiltheit
COM bietet mit dem Dienst
Distributed COM (DCOM) eine transportprotokollneutrale Middleware zur
entfernten Nutzung von Komponenten.