Next: Varieties of object transport
3.15.2. Objects as transportable data
One of the most common needs in distributed applications
development is the ability to ship objects over a network.
Currently, when data has to move from one machine to another
this is usually done using hard-coded structures over a
low-level communications interface such as Berkeley sockets or
the System V Transport Layer Interface. Moving data in this
way has several disadvantages:
Engineers developing distributed systems using object-oriented
methodologies place great emphasis on data encapsulation and
clean interfaces. One of the goals of NetClasses has been to
preserve these properties in the communication interfaces.
- If the format of the data changes, e.g. a new field must
be added to a structure, all programs using that structure
must be recompiled, whether or not they actually make use
of this new field.
- Developing programs using low-level interfaces require
programmers to concentrate on details such as sockaddr
structs, byte ordering routines such as htonl, port
numbers, and so on. These are details that are irrelevant
to most applications and simply stand in the way of
efficient distributed application programming.
- Because of the low-level nature of the interfaces, the
resulting distributed programs are generally not very
scalable. In order for distributed programs to scale up
to large size implementations it is necessary to provide
an infrastructure whereby data and processes can be
managed efficiently as the number of machines on the
network grows. This has proven to be very difficult using
low-level interface tools.
Therefore, instead of shipping byte buffers over the network,
NetClasses allows applications to ship objects. In an
object-oriented program virtually all information is stored in
objects, making objects the most natural form in which to
transfer information over a network.