contributed by Karsten Otto
On the surface, VOS provides the network-transparent abstraction of a graph of interlinked Vobjects. A VOS application can access each Vobject simply through local method calls. Behind the scenes however, the Vobject graph may be distributed across multiple hosts, in a peer-to-peer fashion. To achieve network transparency, VOS represents non-local Vobjects through "stub" Vobjects in the local address space. A stub has the same URL, types and interface as the Vobject it represents. In order to distinguish stubs from actual local Vobjects, they are also called remote Vobjects.
Multiple remote Vobjects may exist in different address spaces, in addition to the local Vobject they represent. State changes may occur concurrently; VOS is responsible for keeping all these Vobjects consistent. For this purpose VOS can utilize one of two protocols, the VOS Infrastructure Protocol (VIP), or the Virtual Object Protocol (VOP). VIP was developed after VOP and is the prefferred protocol, since it offers better performance for most applications, but it has not yet been documented in depth (see the vos-d mailing list archives for some discussion, however). This chapter documents VOP, and VIP uses most of the concepts embodied in VOP, but with many changes at the transport layer, and also in the encoding of messages. The inter-Vobject semantics are the same.