Dynamic Data Exchange
Dynamic Data Exchange
In computing, Dynamic Data Exchange (DDE) is a technology for interprocess communication used in
early versions of Microsoft Windows and OS/2. DDE allows programs to manipulate objects provided by
other programs, and respond to user actions affecting those objects. DDE was partially superseded by
Object Linking and Embedding (OLE), and is currently maintained in Windows systems only for the sake
of backward compatibility.
Contents
History and architecture
Relationship to modern automation technologies
NetDDE
See also
References
Sources
External links
Because DDE runs via message broadcasts, it is vulnerable to any window-management code that does not
pump messages. This problem was not considered during the design of DDE, because DDE predates pre-
emptive multitasking.[2]
Moreover, any code managing a window handle can respond to a DDE broadcast; the initiator of DDE
must distinguish between expected and unexpected responses. DDE interlocutors usually express what
information they seek in terms of hierarchical string keys. For example, a cell in Microsoft Excel was
known to DDE by its "application" name. Each application could further organize information by groups
known as "topic" and each topic could serve up individual pieces of data as an "item". For example, if a
user wanted to pull a value from Microsoft Excel which was contained in a spreadsheet called "Book1.xls"
in the cell in the first row and first column, the application would be "Excel", the topic "Book1.xls" and the
item "r1c1". Internal changes in the cell due to Excel actions would then be signaled (in reverse) to the
calling application via additional message broadcasts.
NetDDE
Wonderware developed an extension for DDE called NetDDE that could be used to initiate and maintain
the network connections needed for DDE conversations between DDE-aware applications running on
different computers in a network and transparently exchange data. A DDE conversation is an interaction
between client and server applications. NetDDE could be used along with DDE and the DDE management
library (DDEML) in applications.
/Windows/SYSTEM32
DDESHARE.EXE (DDE Share Manager)
NDDEAPIR.EXE (NDDEAPI Server Side)
NDDENB32.DLL (Network DDE NetBIOS Interface)
NETDDE.EXE (Network DDE - DDE Communication)
The NetDDE library files
Microsoft licensed a basic (NetBIOS Frames only) version of the product for inclusion in various versions
of Windows from Windows for Workgroups to Windows XP. In addition, Wonderware also sold an
enhanced version of NetDDE to their own customers that included support for TCP/IP. The technology is
extensively used in the SCADA field. Basic Windows applications using NetDDE are Clipbook Viewer,
WinChat and Microsoft Hearts.
NetDDE was still included with Windows Server 2003 and Windows XP Service Pack 2, although it was
disabled by default. It has been removed entirely in Windows Vista.[5] However, this will not prevent
existing versions of NetDDE from being installed and functioning on later versions of Windows.
See also
ActiveX
Component Object Model (COM)
Distributed Component Object Model (DCOM)
Microsoft .NET
Observer pattern
References
1. "Net DDE to DOT NET Remoting" (https://web.archive.org/web/20101111051112/http://ww
w.csharphelp.com/2006/01/net-dde-to-dot-net-remoting/). 2006-01-12. Archived from the
original (http://www.csharphelp.com/2006/01/net-dde-to-dot-net-remoting/) on 2010-11-11.
2. Chen, Raymond (27 Jun 2005). "Why are there broadcast-based mechanisms in Windows?"
(https://web.archive.org/web/20091216071518/http://blogs.msdn.com/oldnewthing/archive/2
005/06/27/432303.aspx). The Old New Thing. Archived from the original (https://devblogs.mi
crosoft.com/oldnewthing/20050627-00/?p=35193) on 16 Dec 2009.
3. Chen, Raymond (26 Feb 2007). "Please feel free to stop using DDE" (https://web.archive.or
g/web/20190315135231/https://devblogs.microsoft.com/oldnewthing/20070226-00/?p=2786
3). The Old New Thing. Archived from the original (https://devblogs.microsoft.com/oldnewthi
ng/20070226-00/?p=27863) on 15 Mar 2019.
4. Joel Spolsky - comment on Fog Creek Software discussion forum (http://discuss.fogcreek.co
m/joelonsoftware4/default.asp?cmd=show&ixPost=118920)
5. NetDDE has been removed in Windows Vista. (http://blogs.msdn.com/nickkramer/archive/20
06/04/18/577962.aspx)
Sources
Charles Petzold. "Dynamic Data Exchange" in Programming for Windows 95. Microsoft
Press.
External links
MSDN: About Dynamic Data Exchange (DDE) (http://msdn2.microsoft.com/en-us/library/ms6
48774.aspx)
NetDDE (http://msdn2.microsoft.com/en-us/library/aa365135.aspx)
Clojure Bindings for DDE, for use in Clojure or Java Applications (https://github.com/tuddma
n/clj-dde)