What is COM

Posted on 2000-05-10
Last Modified: 2010-04-04
I have a Formal Exploratory Report about Delphi's use of COM and i will give all my points to the man/woman who can give me the best Paragraph long answer to this question. I would really appreicate the use of all the big words you can think of so as i can go away and look them up and explore it further.
Question by:grishkin
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
  • 2
LVL 15

Expert Comment

ID: 2798534
Better than give you a paragraph, I'll point you to the best site I know about COM: from the very basics to implementing COM-based solutions.



LVL 10

Accepted Solution

Lischke earned 380 total points
ID: 2799589
Let me try it too :-)

COM (which stands for: component object model) is a technology introduced by Microsoft. It is used to describe, in an almost programming language neutral manner, what an object (in the sense of being software) is able to do. This means there's no concret implementation available from the view of the system or any application other then the COM server but only an interface. The term "interface" is very important in this context as it describes the intent of the class (object). This "intent" is made public to the system by means of the registry (which is very important in particular for out of process COM servers [Out-Proc], but often also for in process servers [In-Proc]) or by IDL files (IDL stands for interface description language).

A very interesting part (seen from the programmer view) is that interfaces are reference counted. This means there is an internal counter which is (can be)incremented whenever a COM class is used somewhere and should not be freed. This counter will be decremented whenever this code section is left and the COM class removes itself automatically when this counter reaches zero. This part is very interesting because it frees the implementor of the class from tracking the usage of the class (which is often simply not possible) and freeing it.

Based on the COM technology are further enhancements like ActiveX, VBA (Visual Basic for Applications) as well as many more special purpose COM servers. For Delphi you can active an Internet Explorer instance within your application or active Photoshop via OLE automation. This all is done using COM. More recent technologies use COM to create windowless rich edit controls (in place editing) via CreateTextServices and for Delphi there's an excellent system library available (written by Madshi) which exclusive uses interfaces to query and return system information, which enables the lib to no longer take care about class usage (as there is a high dependency between various classes).

The latest developments are DCOM (distributred COM) and COM+ (coming with Windows 2000). The first is an extension of COM to be used for COM servers running on different machines in a network. Although already an issue on one machine marshalling becomes now much more important (marshalling is a way to transfer data between address rooms in different processes). COM+ plus goes a step further and adds transaction handling to DCOM. Microsoft advertises this technology for search indexes, file (keyword active directory) and even databases.

There's surely much more to say about COM, but it's already more than one paragraph, so I stop here and let you decide.

Ciao, Mike

Author Comment

ID: 2799987
Adjusted points from 375 to 380
Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!


Author Comment

ID: 2799988

Our lecturer 'Dan the man', is a regular to this site so i won't C&V but you have wrapped this up very nicely...

LVL 10

Expert Comment

ID: 2800062
Although there are quite a lot typos in my text I enjoyed writing it for you :-) Btw: what is C&V?

Ciao, Mike

Author Comment

ID: 2802725
Cut&Paste, sorry...

Featured Post

Enroll in June's Course of the Month

June's Course of the Month is now available! Every 10 seconds, a consumer gets hit with ransomware. Refresh your knowledge of ransomware best practices by enrolling in this month's complimentary course for Premium Members, Team Accounts, and Qualified Experts.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

A lot of questions regard threads in Delphi.   One of the more specific questions is how to show progress of the thread.   Updating a progressbar from inside a thread is a mistake. A solution to this would be to send a synchronized message to the…
Introduction Raise your hands if you were as upset with FireMonkey as I was when I discovered that there was no TListview.  I use TListView in almost all of my applications I've written, and I was not going to compromise by resorting to TStringGrid…
There's a multitude of different network monitoring solutions out there, and you're probably wondering what makes NetCrunch so special. It's completely agentless, but does let you create an agent, if you desire. It offers powerful scalability …
Monitoring a network: how to monitor network services and why? Michael Kulchisky, MCSE, MCSA, MCP, VTSP, VSP, CCSP outlines the philosophy behind service monitoring and why a handshake validation is critical in network monitoring. Software utilized …

695 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question