Letzte Änderung: 2.11.97 von B. Tritsch
Zurück zum Index "PC- und MS-Windows-Support"
Der dynamische Datenaustausch (DDE) ist ein komplexer, aber auch vielseitig anwendbarer Mechanismus, mittels dessen Applikationen miteinander kommunizieren können. Eine derartige Kommunikation geht dabei bei weitem über das reine Austauschen von Daten, wie es z.B. das Clipboard ermöglicht, hinaus.
Die DDE beinhaltet ein im gesamten Windows normiertes Protokoll für verschiedenste Applikationen (verschiedener Hersteller), wie:
Hierfür sind jedoch Konzepte nötig, wie sie aus dem UNIX-Betriebssystem bekannt sind oder allgemein dem Client/Server-Prinzip zugrunde liegen. Die hierfür wesentlichen Begriffe sind:
Unter Windows für Workgroups wurde ein sogenanntes NetDDE eingeführt, das im wesentlichen ein verteiltes DDE-Protokoll über Netzwerk darstellt. In moderneren Windows-Versionen spielt DDE nur noch eine untergeordnete Rolle, da es von mächtigeren Konzepten wie OLE abgelöst wurde.
Historische Bedeutung von OLE
OLE steht für Object Linking and Embedding, das heißt Objekte verknüpfen und einbetten. Für Programmierer ist OLE nicht ganz einfach in eigene Anwendungen zu integrieren, für den Anwender bedeutet es aber eine große Erleichterung.
OLE ermöglicht es verschieden Elemente und verschiedene Programme in einem einzelnen Dokument zu verbinden. Die Elemente können u.a. sein:
Intern ist OLE eine Erweiterung des DDE-Mechanismus!
Bei der Verbindung zwischen Daten und Programmen zu Objekten oder Dokumenten wird zwischen zwei Methoden unterschieden: Embedding und Linking. Der Vorteil beider Methoden ist, daß bestimmte Daten zunächst nicht in das Dokument kopiert werden müssen, sonder nur auf sie referenziert wird, um sie einzubinden.
Embedding: Daten und Programme werden fest miteinander verbunden.
Linking: Daten und Programme werden lose miteinander verknüpft.
Aktuelle Bedeutung von OLE
Mit Object Linking and Embedding (OLE) setzte Microsoft einen Standard für zusammengesetzte Dokumente (Compound Documents). Die Version 1.0 war 1991 Bestandteil von Windows 3.1 und wurde nach grundlegender Erweiterung 1993 von der Version 2.0 abgelöst. OLE verdankt der Art der Integration geschachtelter Dokumente (ebenfalls Objekte) seinen Namen. Mit OLE 1.0 können Objekte entweder vollständig in ein zusammengesetztes Dokument eingebettet (embedded) oder durch eine Referenz mit dem Dokument verbunden sein (linked).
Eine eingebettetes Objekt wird mit seinem Dokument abgespeichert und kann auch nur in dessen Kontext bearbeitet werden. Durch eine Referenz verbundene Objekte werden unabhängig von ihrem Dokument gespeichert und sind demnach als separate Einheiten von verschiedenen Dokumenten referenzierbar.
Mit OLE 2.0 wird das zentrale Dokument zu einem Container", der verschiedenste Server-Objekte aufnehmen kann. Diese Objekte können Graphiken, Videos, Sounds oder aber auch Module mit gewissen algorithmenbasierten Funktionalitäten (z.B. Rechtschreibprüfung) sein.
OLE sorgt für die unverzichtbare Spezifikation und den Bezugsrahmen, in dem es möglich ist, Software aus Komponenten zu entwickeln. In seinem Kern ist dieser Bezugsrahmen ein leistungsfähige und erweiterbare Architektur namens Component Object Model (COM). COM bietet damit Lösungen für Probleme wie den Zugriff auf Objekte die außerhalb der Anwendung liegen oder für den Umgang mit verschiedenen Versionen der Software. Diese Lösungen legen den Schwerpunkt auf binäre Komponenten in einem laufenden System und nicht auf Quelltextkomponenten in einer Anwendung.
Um OLE auch auf verteilten Systemen verfügbar zu machen, wird es um drei Basismechanismen ergänzt: einen persistenten Objektspeicher, Erweiterungen für verteilte Umgebungen sowie Anfrage- und Suchkomponenten für Objekte. Diese Weiterentwicklung wird unter dem Begriff Distributed COM (DCOM) geführt.
Ein weiterführendes Konzept ist ActiveX. Herkömmliche OLE-Dokumente beschreiben ein Verfahren, nach dem Anwendungen ihre Daten in einer Weise ablegen können, die unabhängig vom Speichermedium ist. AcitveX-Dokumente sind dagegen Mechanismen, die ein Objekt unabhängig vom Container machen, so daß es in einem beliebigen Rahmen erscheinen kann. Ein ActiveX-Objektserver kann daher die gesamte Arbeitsfläche der Containeranwendung übernehmen, kann die Menüs des Rahmens ändern und erscheint so, als sei er die Anwendung. Um diese Konzept auch Entwicklern zugänglich zu machen, wurde von Microsoft ein ActiveX-API spezifiziert, das sich im wesentlichen auf OLE stützt.
Ursprünglich waren DLLs das A und O im Bezug auf modulare Programmierung, denn mit ihrer Hilfe konnten Funktionsbibliotheken von mehreren Anwendungen benutzt werden. Konventielle DLLs sind jedoch nicht vielseitig genug, um auf bequeme Weise Dialogelemente erzeugen zu können. Die Lösung liegt in den benutzerdefinerten OLE2-Steuerelementen (OLE Control eXtension - OCX). OCX-Steuerelemente bestehen aus zwei Komponenten: Dem OCX-Steuerelement selbst in Form einer kompilierten Bibliotheksfunktion und dem OLE2-Container der Anwendung, der die Schnittstelle für die Funktionalität des eingebetteten OCX-Steuerelements bereitstellt. Die Schnittstellen von OXC-Elementen umfassen drei Bereiche: Eigenschaften, Ereignisse und Methoden.
OCX-Eigenschaften sind mit einem Bezeichner versehene Werte eines OCX-Elements. Beispiele für Eigenschaften wären Farbe, Größe, Bereich, Statusangaben und Verhaltensflags. Die Eigenschaften von OXC-Elementen weden üblicherweise in die folgenden Klassen eingeteilt:
OCX-Methoden können vordefiniert oder benutzerdefiniert sein. Manche Funktionen eines OCX-Elements können von außerhalb durch den Container aufgerufen werden. So kann beispielsweise eine Anwendung die Elementfunktion eines OCX-Elements aufrufen, um Erscheinung und Status des Steuerelements zu initialisieren.
OCX-Ereignisse können vordefiniert oder benutzerdefiniert sein. Sie werden von OCX-Steuerelementen als Antwort auf bestimmte Aktionen wie Mausklicks ausgelöst. Das OCX-Steuerelement übersetzt diese in Ereignisbenachrichtigungen, die den Container instruieren, auf das Ereignis zu reagieren bzw. die Anzeige zu verändern. Zudem können Ereignisse von Parametern begleitet werden.
Erstellt man ein OCX-Steuerelement unter Visual C++ wird jedes OCX-Objekt von seiner Basisklasse COleControl mit umfangreicher Funktionalität ausgestattet. Dies umfaßt die Fähigkeit zum Zeichnen und zur Serialisierung, die beide vom Programmierer nachträglich angepaßt werden können.
Das Programm Test Container stellt die Dienste eines OLE-Containers zur Verfügung. Damit können OCX-Steuerelemente auf bequeme Weise hinsichtlich Funktion und Leistung ausgetestet werden.