The Advantages of using COM
Nowadays, COM is gaining popularity as most of the languages support development of COM objects including Delphi. In future, all the activities of an Operating system and applications would be services provided by COM. So the users can use those services as easily as Plug-And-Play.
In this article, let me present you some of the advantages/attributes (but most of them are attributes) of COM that I learned.
1. Object Oriented
All the COM objects are Object Oriented as its name implies. There are three basic Object Oriented concepts:
a. Encapsulation: This is implemented by the interfaces provided by the COM Objects. Those interfaces hide the implementation details from the end user and provides the functionality to the user. By that, the user just needs to know what interface methods to call, to do a specific operation provided by that COM object.
b. Polymorphism: This is often called "One Method Multiple Interfaces". A COM object could define a single method to perform a specific operation; but that operation could be implemented through various interfaces/ways.
c. Inheritance: When we want to incorporate some additional functionalities to an existing COM object, we can enhance the existing COM object by inheriting a new COM object from it.
COM incorporates all those three concepts in it.
2. Loose Coupling
In a software, that uses COM objects, we can easily replace an existing COM object with another COM object written in entirely another language as long as the signatures of the methods in both the COM objects remain same. In that case, there will not be any change in the existing software code that uses the COM object.
3. Easy Transition
Let us suppose that a software uses a specific COM object provided by a third party. At some point of time, that third party might upgrade that COM object to incorporate some additional functionalities. At this time, if we would like to use the latest version of that COM object in our software, we can just remove the existing (old) version of that COM object and place this new version of COM into our software as long as the signatures of the methods in the old version of the COM object do not change in the new version. But this is a standard for any COM objects provided by third parties and for anybody who develops COM objects. If they upgrade the existing version of COM object, they will not alter the existing signatures but might add some optional parameters to those methods; But that will not affect the existing system to function properly. So even if we develop a COM object and would like to upgrade, then we should keep in mind the existing method signatures. At any point of time the existing system should not get affected by upgrading to a newer version of COM. This is rather a defined norm in developing COM objects. So transition is easy.
4. Binary Language
Since most of the COM libraries are in binary language, it could be used by any application written in any language. So COM is language neutral. This is one of the main advantages of COM; it's language independent.
5. Resource utilization:
Every COM object will be destroyed automatically as long as no client is using that object actively. This is implemented by COM using a technique called reference counting. Every COM object will maintain a reference count(the number of clients using that COM object); Once that count reaches zero(that means no clients actively using that COM object), then that COM object will be destroyed automatically. With this approach, we can increase resource utilization in an application. Resources such as memory will be best utilized by releasing the inactive/unused COM objects.
The above listing is just an overview of what COM offers us.