INF: When to Use the OLE Libraries or the DDEML

ID Number: Q74805

3.10

WINDOWS

Summary:

This article discusses when to use the Object Linking and Embedding

(OLE) libraries or the Dynamic Data Exchange Management Library

(DDEML).

When to Choose OLE

------------------

Use the OLE libraries in an application that supports any or all of

the following:

- persistent embedding and linking of objects

- rendering of common data formats

- server rendering of specialized data formats

- creating objects and links from the Clipboard

- creating objects and links from files

- activating embedded and linked objects

When to Choose DDEML

--------------------

Use the DDEML for any application that must support simultaneous links

for many items, particularly if the items are updated very frequently.

The DDE example of a real-time stock information server is a good

example of an application best implemented using the DDEML rather than

the OLE libraries.

When to Choose Both OLE and DDEML

---------------------------------

Only in rare cases should an application need to use both the OLE and

DDEML. Generally, these are cases where an application needs OLE to

support persistent embedding and linking of objects and the other

features uniquely offered by OLE, but where the application also needs

DDE to support many simultaneous links for items that are updated very

frequently.

There are no complications when both the OLE libraries and the DDEML

are used simultaneously in a client application. Use the OLE libraries

to initiate conversations with OLE servers; and use the DDEML to

initiate conversations with DDE servers.

There is one complication, however, using both the OLE libraries and

the DDEML in a server application. Different service names (DDE

"application" names) must be used for OLE and DDE conversations. For

example, "myapp" might be assigned as the service name for DDE

conversations, while "myappOLE" might be assigned as the service name

for OLE conversations. This is required because the OLE libraries and

the DDEML have no other way to distinguish which one should respond on

behalf of the registered server when an initiation request is

received.

It probably makes more sense to modify the service name for OLE

conversations than to modify the service name for DDE conversations.

The SHELL.DLL registration services hide the service name for the OLE

conversations from other applications and end users. On the contrary,

other applications and end users must have knowledge of the service

name for the DDE conversation.