Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

What is COM?

0 views
Skip to first unread message

Ryan Gaffuri

unread,
Mar 22, 2002, 7:19:59 PM3/22/02
to
I see this mentioned all over the place and dont know what it is?


Scot T Brennecke

unread,
Mar 22, 2002, 11:48:42 PM3/22/02
to
It is the Component Object Model. It's not a language or an application, but it
is proprietary to Microsoft. The Model describes a standard for object-oriented
interfaces that promotes modularity and reusability of objects more strictly
than simply using an OO language. The Model specifies that all object
interfaces are derivatives of a base interface called IUnknown. Thus, any
object that wants to call itself a COM object must implement the IUnknown
interface, which has three methods: AddRef, Release, and QueryInterface. Using
the QueryInterface method, a client of the object can determine whether the
object implements some other COM interface, and therein obtain a pointer to call
its methods or access its properties.

Other common models like Object Linking & Embedding (OLE), Automation, Drag &
Drop, and Shell Extensions are all based on COM interfaces. What more do you
need to know?

lunch

unread,
Mar 23, 2002, 12:59:55 AM3/23/02
to

"Ryan Gaffuri" <rkg...@erols.com> wrote in message
news:a7gl8k$qip$1...@bob.news.rcn.net...

> I see this mentioned all over the place and dont know what it is?
>
In addition to what Scott said COM was designed to solve the problem of
"binary code reuse".When you compile a C/C++ binary it goes through an
intermediate phase, the compiler creates .obj file (called object files but
don't confuse the terminology), then the linker links these .obj files when
it creates the binaries .dll (and .lib) or .exe
COM is a set of interface rules that a coded object must comply with to be a
COM object. Users, or clients, of the this object can then use it and even
extend it from the binary format without needing to have header files or
.lib files. All the client needs is the documentation for the object, which
is contained in the Type Library which defines the interfaces to the binary.
Actually the Type Library contains some other information like to how find
and load the COM object.

An .ocx is simply a .dll where all the objects exposed by the .dll abide by
the COM interface rules, .ocx is simply a convenient notation to tell
everyone that the .dll contains COM objects.

The equivalent to COM on other Operating Systems is CORBA

cheers


Carl Daniel

unread,
Mar 23, 2002, 1:05:35 AM3/23/02
to
"lunch" <s...@sdf.com> wrote in message
news:vRUm8.5234$EV.1...@news1.telusplanet.net...

>
> "Ryan Gaffuri" <rkg...@erols.com> wrote in message
> news:a7gl8k$qip$1...@bob.news.rcn.net...
> The equivalent to COM on other Operating Systems is CORBA

While COM and CORBA do address many of the same issues, they are very
different systems - neither is a subset of the other.

-cd


Ryan Gaffuri

unread,
Mar 23, 2002, 6:07:07 AM3/23/02
to
I thought OLE was an API to work with Microsoft software like excel?

Does COTS have anything to do with this?

"Scot T Brennecke" <marsco3...@airmail.net> wrote in message
news:3C9C092A...@airmail.net...

Carl Daniel

unread,
Mar 23, 2002, 11:15:09 AM3/23/02
to
"Ryan Gaffuri" <rkg...@erols.com> wrote in message
news:a7hr64$kb3$1...@bob.news.rcn.net...

> I thought OLE was an API to work with Microsoft software like excel?

It is. OLE is built on top of COM (i.e. anything which uses OLE uses COM,
but not vice-versa).

>
> Does COTS have anything to do with this?

COTS is a government acquisition term for "Commercial Off The Shelf" - it
says absolutely nothing about the technology used to create a piece of
software, merely that it's off the shelf (i.e. not custom).

-cd


Mike

unread,
Apr 9, 2002, 6:35:56 PM4/9/02
to

"Carl Daniel" <cpda...@pacbell.net> wrote in message
news:es7rvCj0BHA.1680@tkmsftngp05...

I might also add. COM promotes _interface_ reuse, not binary code reuse. It
is psuedo object-oriented in this sense as your code still has to be
implemented at some point. "Inheritence" can be thought of as "interface
implementation" as opposed to true C++ class inheritence (for example).

CORBA, on the other hand does both. AFAIK, the mapping from the IDL to the
C++ code is direct in that sense.


0 new messages