What is COM?
by Premkumar Varadarajan
In one statement - Component Object Model (COM) is a binary
programming standard. If you genetically combine a whale and a dinosaur, imagine you get a
new super dino-whale species. Combining the two higher level programming models, Object
based and Distributed computing, a new super high level COM programming model has evolved.
Object oriented software has solved numerous software industry
challenges like reuse and productivity. Distributed computing architectures like parallel
processing, master/slave, peer to peer, client/server, etc., has alleviated the problems
with monolithic software. By combining some of the finest features of these two
techniques, the COM standard enforces and enables the engineers to build reusable binary
compatible software.
Some of the advantages of the Component Object Model are:
Location Transparency. The components
clients dont have to know the location of the components. The client software can be
sitting on a lions computer in the deepest jungle in Africa, whereas the server
components can be on a host machine with the arctic bears.
Wire Level Standard. The component users
dont have to know anything about the underlying network mechanisms, TCP/IP or
NETBIOS, to use the components. They dont have to understand or learn anything about
network programming. The COM library takes care of it for you.
Binary Standard. The users dont have to
know about the programming languages C, B, VB, Java, Tea used to build the
components. Regardless of what language you use to build the components and objects, it
works. So, your company can have programmers with different programming skills. But, as
long as they build components, you dont have to bother about training your employees
in new programming languages.
Also, the users dont have to bother about whether the programming tools
Borland C++, Visual Basic, Symantec C++, compilers, linkers, interpreters - were sold by
Microsoft or Symantec or Borland. The client and server components can be developed with
different tools, and they will all interact properly as long as they adhere to the COM
programming model.
Runtime Polymorphism. At runtime the client
detects the right component it wants and uses its services. This means you dont have
to recompile your client every time you make a change to your server. The components
dont mutate. Once, you release a component, if you want to make a change then you
release a new component. If the client wants the new services, only then you have to
modify your client.
This is an objective explanation on COM. Those who want to dive
into the subject, check out the COM
specification at Microsoft site  |