COM Terminology
COM. ActiveX. Automation. OLE. If you’re not confused, you must be dead. Here’s a personal and somewhat irreverent look at COM terminology.
-
Component Object Model (COM). The center of the universe. The purpose of existence. The wave of the future. Technically, anything that has an IUnknown and implements QueryInterface, AddRef, and Release (which I’ll examine later). Practically, COM is a technology
for transparently transferring encapsulated data across boundaries. Whether the boundaries are separate modules, threads, processes,
or machines isn’t supposed to matter. COM is the Microsoft way of
doing this.
-
ActiveX. The cool part of COM. Honestly, I don’t know why some parts of COM are considered ActiveX and other parts aren’t. See
“Automation” on the facing page.
-
OLE. An acronym for Object Linking and Embedding. This includes various forms of compound document technology—nothing more, nothing less.
-
Automation. Anything that makes something else work automatically. The official Microsoft terminology uses Automation (with a
capital A) to mean the part of COM that makes one application programmable from another. But that’s like saying if you capitalize the term air, you can make it the official Air of your company. I always
use the term COM Automation to distinguish it from puppet automation or vehicle automation. So why isn’t COM Automation part of ActiveX? Beats me. Originally, COM Automation was implemented through the IDispatch interface and was used to program applications such as Excel. Today, the term usually includes implementing dual interfaces and programming DLL and OCX components in contexts that hardly fit the normal meaning of automation.
-
Server and Component. In the Visual Basic department, the term server is out and component is in. What used to be called an OLE server is now an ActiveX component. If you need to be more specific, call them ActiveX Controls, ActiveX Documents, ActiveX DLLs, and ActiveX EXE components. But if I sometimes talk about EXE servers and DLL servers, I hope you’ll know what I mean.
In summary, things are a little mixed up and what you think you know now might not be the same thing you know later. Although the terms have changed, the technology behind them hasn’t changed that much, except that more of it is available to Visual Basic programmers.