At the beginning of this decade, objects revolutionized
the structure and design of highly interactive applications running
on GUIs such as Microsoft Windows and the Macintosh. Today, it
is widely believed that distributed objects will similarly
revolutionize client-server systems in the latter half of the
decade. Two commercial efforts, Microsoft's DCOM and OMG's CORBA,
are contending to standardize this perceived market. Several
academic research projects, such as Globus (I-WAY), Mentat, Legion,
and ILU, are focusing on large scale distributed object systems
for scientific applications.
Unlike these efforts, the focus of our distributed
object research is on supporting highly interactive applications
such as image editing, user-steered physical simulations, virtual
reality, and games. Such applications, which we call world
simulations, are characterized by significant computational
requirements combined with an extremely tight control loop where
the user's current action must generate a fast response because
it feeds directly into determining her next action. It is clear
that as the demand for realism in world simulations grows, computational
demands will exceed the resources available in a single PC. We
believe that world simulations of the future will be structured
as groups of interacting distributed objects steered by the user.
We are designing and implementing LDOS, a Lightweight
Distributed Object System, as an infrastructure for our research.
We call LDOS "lightweight" for several reasons. First,
it makes no attempt to achieve backward compatibility, either
with a single proprietary system (DCOM), or with diverse open
standards (CORBA). Second, LDOS makes no attempt to achieve language
independence via an interface language, but rather is strongly
tied to C++. Finally, it strongly leverages existing Internet
technologies such as TCP/IP and DNS, common interfaces such as
BSD-derived sockets, and the features of modern operating systems,
such as threads, in implementing distributed object services that
are interesting to us.
This talk will describe the design and implementation
of the LDOS core services, the part of LDOS that the programmers
of distributed classes see. The core services consist of several
sets of classes. The first set consists of "wrappers"
which distribute existing C++ objects and classes by adding mechanisms
for remote method invocation via streams, and run-time interface
queries. In addition, "mix-in" classes let the programmer
enhance the functionality of their distributed objects and classes
with threads, non-blocking method invocations with sequential
semantics, futures, and network functionality. Finally, there
are the classes of LDOS-specific objects and services such as
run-time classes, object references, and object naming. The LDOS
core services are being co-developed on a Win32 platform and Digital
Unix in order to ensure portability. Several applications have
been written using the implemented parts of LDOS, including a
stock "metaquoter", and a rudimentary image editor.