A crash course in COM, OLE Automation and ActiveX technologies
COM (Component Object Model) has its roots in OLE (Object Linking and Embedding) and Windows 3.0. In its initial stages, OLE was nothing more than a fancy form of Dynamic Data Exchange (DDE), a protocol that allowed client applications to store data from a server application, together with enough information about the server to start the server when requested by the user (usually by double-clicking an image representing the server data). Since then, OLE evolved into a much more complex protocol called OLE Automation, which not only provided a means to exchange data between applications, but also allowed a client application to take advantage of the functionality of a server application through a programmatic interface. Along this evolution COM was born as the standard binary protocol and the set of APIs (Application Programming Interfaces) that make OLE Automation possible. At some point during this process, the term ActiveX also appeared. There has been a lot of confusion regarding the meaning of ActiveX. Some say that ActiveX is nothing more than a marketing strategy from Microsoft; that over time OLE became associated with adjectives like slow and bloated and the market-savvy company needed a new term for the APIs on which its new operating systems, applications and Internet technologies relied. As it currently stands, however, ActiveX is a blanket term used to describe the COM-based technologies that include OLE-Automation, controls, documents, containers, scripting and almost everything else short of the family pet. If you find this confusing, you are not alone, so we’ll take a more pragmatic view of the terminology, describing COM and OLE Automation as the main technologies, and throwing in ActiveX here and there, just for the hype of it.
Basic terminology and mechanics of COM