Object Linking and Embedding
Object Linking and Embedding (OLE) is a distributed object system and protocol developed by Microsoft.
Overview
OLE allows an editor to "farm out" part of a document to another editor and then reimport it. For example, a desktop publishing system might send some text to a word processor or a picture to a bitmap editor using OLE. The main benefit of using OLE, next to reduced file size, is the ability to create a master file. References to data in this file can be made and the master file can then have changed data which will then take effect in the referenced document.
Its primary use is for managing compound documents, but it is also used for transferring data between different applications using drag and drop and clipboard operations. The concept of "embedding" is also central to much use of multimedia in Web pages, which tend to embed video, animation (including Flash animations), and audio files within the hypertext markup language (such as HTML or XHTML) or other structural markup language used (such as XML or SGML)—without the aid of OLE.
OLE uses a fat client architecture, which means that the file type or the application which is being embedded must be present on the machine which is being operated upon. For instance, if a Microsoft Excel spreadsheet is to be manipulated or even viewed, then there must be a copy of Microsoft Excel or Excel Viewer installed on the user's machine.
History
OLE 1.0
OLE 1.0, released in 1990, was the evolution of the original dynamic data exchange, or DDE, concepts that Microsoft developed for earlier versions of Windows. While DDE was limited to transferring limited amounts of data between two running applications, OLE was capable of maintaining active links between two documents or even embedding one type of document within another.
OLE servers and clients communicate with system libraries using virtual function tables, or VTBLs. The VTBL consists of a structure of function pointers that the system library can use to communicate with the server or client. The server and client libraries, OLESVR.DLL and OLECLI.DLL, were originally designed to communicate between themselves using the WM_DDE_EXECUTE message.
OLE 1.0 later evolved to become an architecture for software components known as the Component Object Model (COM), and later DCOM.
When an OLE object is placed on the clipboard, it is stored in native Windows formats (such as a bitmap or metafile), as well as being stored in its own, native format. This native format allows an OLE-aware application to embed a portion of another document cut or copied to the clipboard by the user by storing it in the current document.
The Object Packager, a part of OLE, allows a non-OLE document to be contained within an OLE document.
OLE 2.0
OLE 2.0 was the next evolution of OLE 1.0, sharing many of the same goals, but was re-implemented over top of the Component Object Model instead of using VTBLs. New features were automation, drag-and-drop, in-place activation and structured storage.
ActiveX
Released in 1996, ActiveX introduced a set of web related extensions to OLE, these were: ActiveX Controls, Active Documents and Active Scripting (built on top of OLE Automation).
Legacy
Although the last version of OLE is almost 15 years old, and marketing efforts have been switched into the managed world of the .NET Framework, OLE is still a key technology in modern Windows applications such as Microsoft Office 2007.
See also
- OLE Automation
- OLE for process control
- Component Object Model (COM)
- Distributed Component Object Model (DCOM)
- Dynamic Data Exchange (DDE)
- KPart and Bonobo on Unix and Unix-like operating systems.
- Structured data interchange
External links
- Ryan Naraine, "Microsoft Bows to Eolas, Revamps IE's Multimedia Handling", December 2, 2005.
- "Activating ActiveX Controls" — Microsoft's workaround for the ActiveX issue.
- "Activate ActiveX" — an unofficial workaround for the ActiveX issue.
- "How to stop an ActiveX control from running in Internet Explorer"
- "Activate ActiveX" — an unofficial (and automated) workaround for the ActiveX issue.
- "VOLE - A Neat C++ COM/Automation Driver" — an open-source, compiler-independent C++ COM Automation driver library, for use when having to drive IDispatch directly. VOLE is highly robust, fully encapsulates all "low-level" aspects of IDispatch, and is very flexible, taking and returning normal C++ types.
This article is based on material taken from the Free On-line Dictionary of Computing prior to 1 November 2008 and incorporated under the "relicensing" terms of the GFDL, version 1.3 or later.