|
DynObj - Overview
Features of the DynObj Library
It makes sense to think of DynObj as a type information system
that is shared between libraries/executables compiled by
different (possibly different language) compilers:
- Interface classes are shared formally.
- The binary layout of a compound object is exposed in
a well defined way.
- Intefaces and class hierarchies can be used intuitively
and directly across plugin boundaries.
- All interface classes can be shared, also those that don't
derive from a single default root interface (such as
IUnknown in COM).
- A language neutral representation of type information is used.
Point (4) implies that DynObj can handle multiple types of
object ownership (i.e. ref counting is not enforced).
The last point means that DynObj plugin libraries can be implemented
in compiled languages other than C++ (and also used from other languages).
Similar libraries
There are other approaches that does similar things (xpCOM, COM,
and CORBA). These are some differences:
- The DynObj library is based on a shared type system, it does
not rely on a member function QueryInterface, to
retrieve interfaces. The DynObj type system does this work silently.
- A wider range of types is handled (since a root base interface is
not enforced).
- It allows for different object ownership models (strong/shared/weak).
- DynObj does not rely on an IDL layer. Interface definitions are
are ordinary classes and not weighted down by a heavy use of
macros.
The DynObj library is more lightweight and not dependant on a large code
base or OS specific.
Other libraries have features such as out-of-process
execution, distributed objects and much more, areas which DynObj does not
touch.
|