Difference Between COM and DCOM
History of Component Object Model (COM):
One of the first methods of interprocess communication in Windows (windows family operating system) was DDE (Dynamic Data Exchange) that allowed sending and receiving messages in so called “Conversations” between applications. This technology was the base of OLE (Object Linking and Embedding) that in turn was one of the leading technologies introduced with windows 3.0. Text conversations and windows messages proved not to be as flexible as to allow sharing application features in a robust and extensible way. By the time version 3.1 of Windows was released, COM was created as a new foundation, and OLE changed to OLE2.
Visual Basic introduced the VBX (Package extensions in the form of dynamically linked libraries) that allowed the creation of objects to be graphically placed in a form and manipulated by properties and methods. These were later adapted for use by other language such as Visual C++. OLE custom controls (OCXs) would be the replacement for the widely popular VBX.
From many of these ideas spawned Microsoft’s first o object-based framework, OLE, which is the abbreviation of Object Linking and Embedding. OLE was built on top of dynamic data exchange (DDE) and designed specially for compound documents. It was introduced with MS-Word for Windows and Excel in 1991, and was later included with Windows, starting with version 3.1 in 1992. An example of a compound document is a spreadsheet embedded in a MS-Word for Windows document; as changes are made to the spreadsheet within Excel, they appear automatically inside the Word document.
In early 1996, Microsoft found a new use for OLE Custom Controls, expanding their web browser’s capability to presents content, renamed some parts of OLE relating to the internet ActiveX gradually renamed all OLE technologies to ActiveX, excepts the compound document technology that was used in Microsoft Office. Later that year, DCOM was introduced as an answer to CORBA.
Component Object Model (COM):
Component object model is an interface standard for software component introduced by Microsoft in 1993. It is used to enable interprocess communication and dynamic object creation in any programming language that supports the technology. The term COM is often used in the software development industry as an umbrella term that encompasses the OLE, OLE Automation, ActiveX, COM+ and DCOM technologies.
COM is a software architecture that allows applications and systems to be built from the components supplied by different software vendors. It is a set of binary and network standards that allows any software to communicate with each other regardless of the hardware, the operating system, and programming language used for development. COM is not a Programming language but a specification that defines how components can communicate with each other.
In a component based system, components interact with each other by calling methods and passing data. COM ensures that there is a standard method of interaction between the components. All the COM objects need to follow these standards when providing the functionality. Standards are as important to component architecture as they are to any system with interchangeable parts. For example, the signal that a television or radio receives is specified in a standards. Without standards, nothing will function together.
Benefits of COM:
Any Programming language that can create structures of pointers and call functions through pointers can create and use components objects. Components can be implemented in a number of programming languages and can be used for client software written in different programming languages. This is because COM provides a binary and not source code standard. This is the fundamental benefit of COM over object oriented language.
Distributed Component Object Model (DCOM):
DCOM is a model as COM but is specially designed for distributed applications. While there is a need of using the applications as distributed then DCOM becomes in picture.
Distributed Component Object Model is proprietary Microsoft technology for communication among software components distributed across networked computers. DCOM, which originally was called “Network OLE”, extends Microsoft’s COM, and provides the communications substrate under Microsoft COM+ application sever infrastructure. It has been deprecated in favour of Microsoft .Net.
In terms of the extensions it added to COM, DCOM had to solve the problem of
1. Marshalling: serialize and de-serializing the arguments and returns values of methods calls over the wire.
2. Distributed garbage collection: ensuring that references held by clients of interfaces are released when, for example, the client process crashed, or the network connection was lost.