OSF DCE Application Development Guide--Core Components

Developing a Simple RPC Application
11.1.2 Stubs
The stub performs basic support functions for remote procedure calls. For instance, stubs
prepare input and output arguments for transmission between systems with different
forms of data representation. The stubs use the RPC runtime to handle the transmission
between the client and server. The client stub can also use the runtime to find servers for
the client.
When a client application calls a remote procedure, the client stub first prepares the input
arguments for transmission. The process for preparing arguments for transmission is
known as marshalling. Marshalling converts call arguments into a byte-stream format
and packages them for transmission. Upon receiving call arguments, a stub unmarshalls
them. Unmarshalling is the process by which a stub disassembles incoming network data
and converts it into application data by using a format that the local system understands.
Marshalling and unmarshalling both occur twice for each remote procedure call; that is,
the client stub marshalls input arguments and unmarshalls output arguments, and the
server stub unmarshalls input arguments and marshalls output arguments. Marshalling
and unmarshalling permit client and server systems to use different data representations
for equivalent data. For example, the client system can use ASCII characters and the
server system can use EBCDIC characters, as shown in Figure 11-2.
Figure 11-2. Marshalling and Unmarshalling Between ASCII and EBCDIC Data
unmarshalling
marshalling
marshalling
unmarshalling
Server stub
Input argument
Output argument
Client stub
Remote procedure call
EBCDIC
EBCDIC
Byte stream format
ASCII
ASCII
The DCE IDL compiler (a tool for DCE application development) generates stubs by
compiling an RPC interface definition written by application developers. The compiler
generates marshalling and unmarshalling routines for platform-independent IDL data
types.
To build the client for an RPC application, a developer links client application code with
the client stubs of all the RPC interfaces the application uses. To build the server, the
developer links the server application code with the corresponding server stubs.
124245 Tandem Computers Incorporated 115