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.
Copyright 2005, 2017 Instantiations, Inc. All rights reserved.