Generated by GPT-5-mini| COM (Component Object Model) | |
|---|---|
| Name | Component Object Model |
| Developer | Microsoft |
| Initial release | 1993 |
| Programming language | C, C++ |
| Platform | Microsoft Windows |
| License | Proprietary |
COM (Component Object Model) is a binary-interface standard developed by Microsoft for enabling interprocess communication and dynamic object creation in a language-independent way. It underpins numerous Microsoft technologies and integrates with products and standards across the software industry, including operating systems, development tools, and enterprise platforms. COM influenced later frameworks and remains relevant for interoperability in legacy and mixed-environment deployments.
COM emerged within Microsoft alongside projects such as Windows NT, Microsoft Office, Internet Explorer, Visual Basic, and OLE (Object Linking and Embedding) to solve componentization and extensibility challenges faced by teams like those behind Microsoft Word and Excel. Its design was shaped by engineering efforts at Microsoft Research and by influences from concurrent technologies including CORBA, DCE, and systems developed at institutions such as Bell Labs and Xerox PARC. Major product launches—Windows 95, Windows 98, and Windows 2000—incorporated COM-centric features, while integrations with ActiveX and DirectX extended COM into multimedia and web contexts. Key corporate milestones affecting COM adoption include partnerships and competition with IBM, interactions with standards groups like the Internet Engineering Task Force, and legal and market events involving Sun Microsystems and Oracle Corporation that shaped enterprise middleware strategies. Over time, successor Microsoft initiatives such as .NET Framework, CLR (Common Language Runtime), and Windows Runtime adapted or replaced parts of COM, though COM remains foundational in technologies tied to Office 365 and legacy application portfolios from vendors like SAP and Oracle.
The COM architecture centers on binary contracts exposed as interfaces implemented by objects loaded into processes or across process boundaries, enabling composition among systems such as Microsoft Exchange Server, SQL Server, IIS (Internet Information Services), and client applications like Outlook and Internet Explorer. Core concepts include globally unique identifiers (GUIDs) similar in role to identifiers used by ICANN for domains, class factories akin to patterns used by Sun Microsystems in Java, and registration mechanisms integrated with Windows Registry and installers produced by vendors such as InstallShield and Microsoft Visual Studio. The runtime model supports in-process DLL servers, local COM servers (EXE), and remote servers using RPC-like technologies similar to DCE/RPC used in systems designed by DEC and AT&T Bell Laboratories. This model enabled integration across ecosystems including Adobe Systems products, Symantec utilities, and enterprise suites from IBM and HP.
COM defines interfaces as immutable binary vtables comparable in role to object models used in Smalltalk and C++ but with explicit contracts expressed via interface identifiers (IIDs) analogous to identifiers used by standards such as ISO specifications. The canonical base interface provides methods for querying interfaces and manual lifetime management through reference counting, a pattern conceptually related to techniques used in Objective-C and resource management approaches in systems like BeOS and NeXTSTEP. Clients obtain pointers to interface vtables and call methods directly, enabling language bindings across ecosystems from Borland and Intel compilers to managed runtimes like Mono and .NET Framework. The reference-counting model influenced memory-management debates alongside garbage collection implementations in Sun Microsystems's Java Virtual Machine and tracing collectors used in research at MIT and CMU.
COM implementations exist in native languages such as C++ and through wrappers for higher-level environments including Visual Basic, C#, Delphi, and scripting hosts like Windows Script Host. Toolchains from Microsoft Visual Studio, Borland Delphi, and build systems influenced by GNU toolchains produce type libraries and proxies/stubs, while middleware such as SOAP and XML-RPC emerged for web-service scenarios. Interop technologies link COM to managed platforms like .NET Framework via Runtime Callable Wrappers and COM Callable Wrappers, enabling integration with applications from Adobe, Autodesk, and enterprise middleware from IBM WebSphere and Oracle WebLogic. Language projections and IDL compilers parallel efforts found in GNU Compiler Collection projects and open-source efforts like Wine that reimplement Windows APIs.
Security for COM components relies on process boundaries, access controls provided by Windows NT security model, and authentication/authorization frameworks such as Kerberos and NTLM used in Active Directory environments. COM+ and Distributed COM introduced role-based services and transaction coordination similar to patterns in CORBA and J2EE application servers like Apache Tomcat and JBoss EAP to mitigate risk and manage privileges. Sandboxing approaches evolved with browser-hosted ActiveX controls facing scrutiny from stakeholders including European Union regulators and government cybersecurity agencies, prompting measures analogous to sandbox designs in Google Chrome, Mozilla Firefox, and Apple Safari. Security incidents involving components prompted industry responses aligned with best practices advocated by organizations such as CERT and NIST.
COM has been used extensively for automation and extensibility in flagship products such as Microsoft Office, Internet Explorer, DirectX-based games from studios like Electronic Arts and id Software, and enterprise integrations with SAP and Siebel Systems. It enabled plugins, scripting, and automation in tools from Adobe Systems (for example, Photoshop) and CAD suites by Autodesk, and facilitated device drivers and system services in Windows ecosystems. Interoperability scenarios connect COM to web services, messaging platforms such as Microsoft Exchange, and databases like Oracle Database and Microsoft SQL Server, while tools like OLE Automation and technologies including Active Scripting created bridges to languages and frameworks from vendors such as Sun Microsystems, IBM, and the open-source community exemplified by projects like Wine and Mono.
Category:Microsoft technologies