Microsoft’s Distributed COM (DCOM) grew out of COM which stands for Component Object Model.
COM is the technology underlying various operating systems produced by Microsoft starting with Windows 95.
The goal of COM is to support the development of components that can be dynamically activated and that can interact with each other.
A component in COM is either an executable code contained in a library or in the form of executable program.
DCOM offers processes to communicate with each other that are placed on other machines.
COM is a platform-independent, distributed, object-oriented system for creating binary software components that can interact.
COM objects can be created with a variety of programming languages. Object-oriented languages, such as C++, provide programming mechanisms that simplify the implementation of COM objects.
Architecture of DCOM:
DCOM makes use of the Windows registry in combination with special process called as Service Control Manager to actually activate an object that is created and placed inside a process where it can accept method invocation.
A DCOM object is created as an instance of a class. Dcom has class objects that represents a collection of objects of same type
When an object is to be executed on a remote host the client contacts that hosts Service Control Manager (SCM) which is a process responsible for activating objects.
On client side, a process is given access to SCM and the registry to help look for and set up a binding to a remote object. The client will offered a proxy implementing object interfaces.
The object server wil consist of stub for marshalling and un-marshalling invocations passed to the object. Comunication between client and server is done using RPC.
The client calls the functions of the interface proxy having the same functions as the target interface. The proxy marshalls the data and sends to the server side.
The stub gets the data sent from the client proxy and unmarshalls the data. The parameters are extracted and passed to the actual interface.
The server implementation feels that the request comes from a real client. In fact the stub calls the function on the server. But the server need not have to worry about these details. The server processes the parameters and returns the parameters to the stub.
The stub marshalls the return values and send to the client proxy. The proxy unmarshalls the return values and passed to the client.
Some of DCOM services are Monikers, structured storage, marshaling utilities etc.