When a procedure or function is called which is remote, there must be
some mechanism to bind the call to the appropriate instance of the
procedure. There may be many servers that implement this particular
procedure.
There are three choices for when the binding is done:
-
It can be at compile time. The location of the procedure is
compiled into the client.
-
It can be at load time. When the program is linked and loaded to
run, the programmer or system indicate which set of remote instances
are the ones this application will use.
-
It can be at call time. When the client reaches the call to the
remote procedure, the decision is made which instance to bind to.
Sophisticated RPC systems define one of the base types of the
interface language to be an ;SPM_quot;instance;SPM_quot;. This allows clients and
servers to pass instances of clients and servers amongst each other.
It makes the definition of the interface to the Binding service
itself cleaner. It is the first step towards providing some notion of
inheritance in an RPC system.
The location service has itself to be located. There are several
approaches:
-
It is at a well known location. [;SPM_quot;Well known;SPM_quot; is a euphemism for
;SPM_quot;wired in constant;SPM_quot;].
-
Clients broadcast (multicast to a well known multicast address)
for the location service.
-
All clients implement some aspect of the location service.
This last case is complex. The idea is that every host that
implements a particular service advertises the fact, and this is made
known since all services include the location mechanism for that
service (by inheritance).