OLE
Microsoft's OLE technology is really a collection of additional higher-level technologies that build upon COM and its infrastructure. OLE version 2.0 was the first deployment of a subset of this COM specification that included support for in-process and local objects and all the infrastructure technologies but did not support remote objects. OLE 2 includes mostly user-interface oriented features based on usability, application integration, and automation of tasks. All of these features are implemented by means of specific interfaces on different objects and defined sequences of operation in both clients and servers and their relationships and dependencies on the lower level infrastructure of COM is shown in Figure 1-10.
Figure 1-10. OLE builds its features on COM
- Drag & Drop The ability to exchange data by picking up a selection with the mouse and visibly dropping it onto another window.
- Automation The ability to create programmable applications that can be driven externally from a script running in another application to automate common end-user tasks. Automation enables cross-application macro programming.
- Compound Documents The ability to embed or link information in a central document encouraging a more document-centric user interface. Also includes In-Place Activation (also called Visual Editing) as a user interface improvement to embedding where the end user can works on information from different applications in the context of the compound document without having to switch to other windows.
Microsoft in cooperation with other vendors is continuing to enhance OLE with new interfaces to extend compound documents and to define architectures for creating components such as OLE Controls, OLE DB, OLE for Design and Modeling, OLE for Healthcare, and in the future more system-level OLE architectures that build not only on the COM infrastructure but also on the rest of OLE as well. Again, the key is leveraged work: by implementing lower level features in an application you create a strong base of reusable code for higher level features.