Dieser Text ist ein Auszug aus dem Buch: "COM-Komponenten-Handbuch" (Weitere Infos hier)

 

          COM im Überflug

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.

 

      COM-Begriffe

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 (ActiveX Controls)

  • ActiveX-Dokumente (ActiveX Documents)

  • ActiveX Scripting

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).

 

      Eigenschaften von COM

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.

 


 

Autor: Holger Schwichtenberg
Dieser Text ist ein Auszug aus dem Buch: "COM-Komponenten-Handbuch" (Weitere Infos hier)