PreviousNext

Server Binding Model

The following figure shows the set of relationships that a server must establish to receive remote procedure calls. As that figure indicates, these are maintained in several places:

· By the server runtime

· In the stub and application code

· By the endpoint mapper

· By a name service


Server Binding Relationships

The steps that server applications take to establish these mappings are not discussed here since they are fully documented in the OSF DCE Application Development Guide - Core Components. Once established, this set of relationships allows the server runtime to construct a complete binding, with routing to a specific server operation, for a call that contains the following information:

· Full or partial binding information

· An interface identifier

· An object UUID, which may be nil

· An operation number

Note that the server runtime itself maintains only a very limited set of relationships: interface identifier/type UUID/manager EPV and object UUIDs/type UUIDs. It is especially worth noting that the runtime maintains no relationships between the protocol-address bindings it has created and any of the other information. The server merely advertises the relationships it wants to export in a name service and registers them in the endpoint map. Bindings are exported and registered along with interface identifiers and, possibly object UUIDs.

When the exported and registered information is used by clients to find the server, client calls arriving at the server endpoints should contain interface identifier/object UUID pairs that the server can, in fact, service, although the RPC mechanism itself can provide no guarantee of this. This means that name service and endpoint map operations, while they are not, strictly speaking, a required part of an RPC call, usually play an important role in constructing bindings.

The indirect mapping from object UUID to type UUID to EPV (and hence to the manager called) also gives the server some flexibility in organizing its resources based on object UUIDs. This is explained in Call Routing.