OSF DCE Application Development Guide--Core Components

OSF DCE Application Development Guide—Core Components
The additional information required that a client imposes on the RPC runtime includes an
RPC interface identifier and an object UUID, as follows:
Interface identifier
The interface UUID and version numbers of an RPC interface:
— Interface UUID: The interface UUID, unlike the interface name, clearly
identifies the RPC interface across time and space.
— Interface version number: The combined major and minor version numbers
identify one generation of an interface.
Version numbers allow multiple versions of an RPC interface to coexist. Strict
rules govern valid changes to an interface and determine whether different
versions of an interface are compatible. For a description of these rules, see
Chapter 17 on IDL syntax and usage.
The runtime uses the version number of an RPC interface to decide whether the
version offered by a given server is compatible with the version requested by a
client. The offered and requested interface are compatible under the following
conditions:
— The interface requested by the client and the interface offered by the server
have the same major version number.
— The interface requested by the client has a minor version number less than or
equal to that of the interface offered by the server.
Object UUID
A UUID that identifies a particular object.
An object is a distinct computing resource, such as a particular database, a specific
RPC service that a remote procedure can access, and so on; for example, personal
calendars may be RPC objects to a calendar service. Accessing an object requires
including its object UUID with the binding information used for establishing a
binding. A client can request a specific RPC object when requesting new binding
information, or the client can ask the runtime to associate an object UUID with
binding information the client already has available.
Sometimes the object UUID is the ‘‘nil’’ UUID; when calling an RPC runtime
routine, you can represent the nil UUID by specifying NULL. In this case, the object
UUID does not represent any object. Often, however, the object UUID represents a
specific RPC object and is a non-nil value. To create a non-nil object UUID, a server
calls the uuid_create() routine, which returns a UUID that the server then associates
with a particular object.
If a client requests a non-nil object UUID, the client runtime uses that UUID as one
of the criteria for a compatible server. When searching the namespace for server
binding information, the client runtime looks for the requested interface identifier and
object UUID. The endpoint map service uses this same information to help find a
compatible server.
Figure 12-2 illustrates the aspects of a server and its system that are identified by the
client’s server binding information, requested interface identifier, and requested object
UUID.
12 6 Tandem Computers Incorporated 124245