# Dynamic Data Exchange

Dynamic Data Exchange (englisch für dynamischer Datenaustausch, kurz DDE) ist ein Protokoll für den Datenaustausch zwischen verschiedenen Anwendungsprogrammen, also eine Interprozesskommunikation nach dem Client-Server-Modell.

## Details

Dieses Protokoll ist lokal und in den Betriebssystemen Windows (ab Version 2.0) und OS/2 verfügbar. Die per Zusatzprotokoll NetDDE geraume Zeit mögliche Verwendung in Rechnernetzen wurde mit Windows Vista aus Sicherheitsgründen entfernt.
Der Datenaustausch erfolgt zwischen zwei oder mehr lokalen Anwendungen. Eine der Anwendungen wird als Client-Anwendung, eine andere als Server-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 und Microsoft 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ßen arbiträren Datenmengen, etwa Matrizen in Matlab, 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 bei OLE, nicht nötig.
Typisch für DDE und auch festgelegt ist die dreistufige Adressierung von Datenelementen, eingeteilt Server (Dienst), Topic (Thema) und Item (Element). Eine tiefergehende Adressierung, etwa bestimmte Zeilen und Spalten einer Tabellenkalkulationsseite, muss durch ein wahlfreies, nicht-aufzählbares Item erfolgen.
Implementiert ist DDE durch Nachrichten über die Windows-typischen Thread-Warteschlangen sowie mittels gemeinsam genutztem Speicher für die eigentlichen Daten.
Die Leistungsfähigkeit von DDE liegt grob bei 1000 Übertragungen pro Sekunde, wenn die Kommunikation über einen GUI-Thread erfolgt, und kann bei Verwendung gesonderter Threads deutlich höher liegen. Die mit Windows 3.1 eingeführten DDE-Funktionen, zunächst in der DDEML.DLL verpackt, sind praktisch nur Wrapper, 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 der Netzwerk-DDE machbar, da die 64-Bit-Windows-Versionen keine 16-Bit-Unterstützung bieten.

## Aktueller Stand

DDE findet heute immer noch Verwendung, etwa zum Weiterleiten von Kommandozeilen an bereits laufende Prozesse, typischerweise an MDI-Anwendungen. So kann der Windows-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 verwendet werden (wie z. B. bei Google Chrome).
Auf Grund seiner Einfachheit war Netzwerk-DDE bei Maschinen- und Fabriksteuerungen verbreitet, bis es seit Windows Vista nicht mehr unterstützt wurde.
DDE wurde durch das OLE-Protokoll ergänzt und erweitert.
Als Alternative, insbesondere für kontinuierliche Datenströme, bieten sich Sockets an.