A process can grant access to its resources by creating clones of its dual object instances and transferring these clones to other processes. Thus in the A dviser example the private system-level members are shared amongst all instances transitively cloned from the same origin. In contrast all protected user-level members are independent copies that will be manipulated independently from each other. Consequently the cap , mode , protocol , high and low members will always refer to the user-level part of the client actually calling a specific Adviser instance. Robustness of services is therefore enhanced and system-level data can be shared conveniently and economically amongst many clients.
Dual objects have two representations at runtime, one for clients and one for servers.
We call instances of the client's representations likenesses and instances of the server's representation prototypes . A likeness reflects the public interface of a dual class and consists of public and protected members only, whereas the prototype consists of all members. Thus a likeness is both an object that can be manipulated locally as well as a proxy for a remote prototype. Domains are a concept for local object spaces that are managed by active server objects we call clerks . These clerks are able to instantiate new prototypes upon request and control access to all objects within their domains.