Dynamic Data Exchange (englisch für dynamischer Datenaustausch, kurzDDE) ist einProtokoll für denDatenaustausch zwischen verschiedenenAnwendungsprogrammen, also eineInterprozesskommunikation nach demClient-Server-Modell.
Dieses Protokoll ist lokal und in den BetriebssystemenWindows (ab Version 2.0) undOS/2 verfügbar. Die per ZusatzprotokollNetDDE geraume Zeit mögliche Verwendung inRechnernetzen wurde mitWindows Vista aus Sicherheitsgründen entfernt.[1]
Der Datenaustausch erfolgt zwischen zwei oder mehr lokalen Anwendungen. Eine der Anwendungen wird alsClient-Anwendung, eine andere alsServer-Anwendung bezeichnet. In der Client-Anwendung wird die Verknüpfung initialisiert und angegeben, welche Daten von der Server-Anwendung benötigt werden, die dann die angeforderten Daten zur Verfügung stellt. Man kann über diese DDE-Verbindung Daten und Anweisungen in beide Richtungen so zwischen den Anwendungen austauschen, dass die Anwendungen, z. B.Microsoft Excel undMicrosoft Word, aber auch Anwendungsprogramme anderer Hersteller, zusammenarbeiten und wie eine einzige Anwendung wirken.
Damit Daten ausgetauscht oder Befehle abgesetzt werden können, müssen beide Anwendungsprogramme gleichzeitig laufen. Falls nötig muss der DDE-Client den benötigten Server-Prozess starten. Der Datenaustausch erfolgt grundsätzlich in kompletten Dateneinheiten in Windows-Zwischenablage-Formaten (also auch Binärdaten);kontinuierliche Datenströme werden üblicherweise nicht unterstützt. Da zwei sich kennende Programme neue Zwischenablageformate definieren können, ist auch der Austausch von großenarbiträren Datenmengen, etwaMatrizen inMatlab, kein Problem. Als Besonderheit bietet DDE ein „Advise“ genanntes Hot-Tracking (Datenänderungsbenachrichtigung) an, mit dem der Client automatisch über Veränderungen des Server-Datenbestands informiert wird. Ein vorheriges Abspeichern von Dokumenten ist, anders als beiOLE, nicht nötig.[2]
Typisch für DDE und auch festgelegt ist die dreistufige Adressierung von Datenelementen, eingeteiltServer (Dienst),Topic (Thema) undItem (Element). Eine tiefergehende Adressierung, etwa bestimmte Zeilen und Spalten einerTabellenkalkulationsseite, muss durch ein wahlfreies, nicht-aufzählbaresItem erfolgen.
Implementiert ist DDE durch Nachrichten über die Windows-typischenThread-Warteschlangen sowie mittelsgemeinsam genutztem Speicher für die eigentlichen Daten.
Die Leistungsfähigkeit von DDE liegt grob bei 1000 Übertragungen pro Sekunde, wenn die Kommunikation über einenGUI-Thread erfolgt, und kann bei Verwendung gesonderter Threads deutlich höher liegen. Die mitWindows 3.1 eingeführten DDE-Funktionen, zunächst in der DDEML.DLL verpackt, sind praktisch nurWrapper, die die Verwendung vereinfachen aber keinen Geschwindigkeitsvorteil bringen.
DDE überwindet „Bitgrenzen“ relativ problemlos. So ist es möglich, dass ein 16-Bit- und ein 32-Bit-Windows-Programm kommunizieren, so auch ein 32-Bit- und ein 64-Bit-Programm. Eine Kommunikation zwischen 16-Bit und 64-Bit war regulär nur früher vor Windows-Vista mittels derNetzwerk-DDE machbar, da die 64-Bit-Windows-Versionen keine 16-Bit-Unterstützung bieten.
DDE findet heute immer noch Verwendung, etwa zum Weiterleiten von Kommandozeilen an bereits laufende Prozesse, typischerweise anMDI-Anwendungen. So kann derWindows-Explorer bei geeignet eingestellten Verknüpfungen ein Dokument an einen bereits laufenden Bearbeitungsprozess „senden“, ohne eine unnötige Prozess-Kopie zu erstellen. Moderne Browser arbeiten teilweise auch mit DDE (z. B.Mozilla Firefox). Sofern DDE nicht unterstützt wird, kann hilfsweise zum Teil das Windows Accessibility Interface[3] verwendet werden (wie z. B. beiGoogle Chrome).
Auf Grund seiner Einfachheit war Netzwerk-DDE bei Maschinen- und Fabriksteuerungen verbreitet, bis es seitWindows Vista nicht mehr unterstützt wurde.
DDE wurde durch dasOLE-Protokoll ergänzt und erweitert.
Als Alternative, insbesondere für kontinuierliche Datenströme, bieten sichSockets an.