Re: Opendoc (was Re: spell checking)



Ooops!  I apologize.  I accidentally hit the send button too
soon.  Ignore the previous message.  Here is the full posting:

Jo Dillon wrote:
> 
> John R Sheets (dusk@smsi-roman.com) spake thusly:
> 
> > I have a little experience with OLE, and would be happy to
> > answer/research any questions about it.
> >
> > John
> 
>   Well, a brief outline of the architecture would be nice. I,
> and I'm sure a number of other people on this list, know virtually
> nothing about it.
> 
>         Jo

Sure thing!  To the best of my current knowledge (correct me if
I'm wrong):

First off, COM (Component Object Model) is the general
specification for  interaction between objects (similar to
CORBA?...).  OLE is Microsloth's windows implementations of COM. 
(Incidentally, ActiveX is a narrower implementation of OLE that
makes it easier to deploy it on a web site, AFAIK.)

OLE/COM is heavily based on the idea of interfaces.  Each and
every COM object (e.g. a GUI control, or container, or service)
uses more than one interface to talk back and forth between its
owner (container, server, whatever).  Common interfaces are file
operations (save, load, etc.), common math functions, object
creation, and interface polling (i.e. "Do you have *this*
bitmap-displaying interface?").  Each interface is defined
separately, and sort of corresponds to a header file, and must be
registered with the OS.  (And yes, this does lead to quite a bit
of bloat in the Windows registry...one side-effect of OLE that I
don't like.)  Each interface is identified by a massive,
supposedly unique index number that is stored in the registry.

Soooo, an interface is basically the definition of a set of
function calls (function names, parameter lists, etc) that any
OLE component can implement, if it so chooses.  You can use
interface polling to determine if a given object supports
so-and-so interface.

When you develop a new OLE component (say, a viewer for a new
type of bitmap), you will create whatever new interfaces your
component needs.  Any other object that wants to use your new
component will have to be aware of those new interfaces if it
wants to use those functions.

How's that for an obfuscated first pass?  I imagine I'll be
making a second pass here pretty soon...

John

P.S.--I'm not familiar with CORBA yet...how close are the
concepts to COM/OLE?



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]