|
We argue that objects that interact in a distributed system need to be
dealt with in ways that are intrinsically different from objects that
interact in a single address space. These differences are required
because distributed systems require that the programmer be aware of
latency, have a different model of memory access, and take into account
issues of concurrency and partial failure.
We look at a number of distributed systems that have attempted to
paper over the distinction between local and remote objects, and show
that such systems fail to support basic requirements of robustness and
reliability. These failures have been masked in the past by the small
size of the distributed systems that have been built. In the
enterprise-wide distributed systems foreseen in the near future, however,
such a masking will be impossible.
We conclude by discussing what is required of both systems-level and
application-level programmers and designers if one is to take distribution
seriously.
|