Remote references and proxies
Integral to the representation of "everything as an object" is the concept of proxies. A proxy is an object which stands in for something else. It may take the form of a remote reference to a remote object, a CORBA- style stub, or the conceptualization of CICS server data and CICS transaction programs as an object. It may represent a remote object, an object in a different language, or even a persistent object. Regardless, from the proxy holder's viewpoint, the proxy is the object and can be stored in variables, passed as arguments and sent the messages specified in its related interface.
Remote references are proxies which identify particular objects in particular object spaces (location) and explain (indirectly) how to get a message to that object. While you can treat them as you would normal objects, the increased message latency will make users aware of which references are local and which are remote. When tuning a distributed application you can test whether an object reference is local or remote using the sstIsRemote protocol.
Remote references (and other instances of subclasses of nil) should never be put directly in the Smalltalk dictionary or in class or pool variables. While this may appear to work while your distributed system is up and running, various parts of the normal Smalltalk infrastructure scans these objects and sends them messages such as isClass which are not appropriate for general implementation on remote references.
For the most part, the differences among reference types supported in SST are hidden from you. However, with respect to object identity, differences are exposed. Smalltalk is a referential language. Other than a few objects (for example, SmallIntegers, Booleans) all objects are accessed by reference and even some referenced objects are truly values in that they cannot be modified (for example, Floats). SST attempts to maintain these semantics as much as possible but in some cases it is impossible. There are two kinds of references you are likely to encounter: transient references and symbolic references.
Last modified date: 04/20/2020