- Interpose between the calling side and the called side.
- Package the input parameters as a request.
- Package the output parameters as a reply.
- Transport the request to the server and the reply to the client.
- Management functions; advertising and locating servers.
- Interposition can be hidden or specified.
- The difference is the ability to influence the RPC system operation.
- Hidden interposition looks just like a procedure call.
- Not really; there's compilation and linking requirements, as well as
argument restrictions.
- Little RPC control is possible.
- Proxies are a useful and flexible way to interpose transparently,
particularly in object-oriented languages.
- Specified interposition looks like an augmented procedure call.
- RPC-call data-packing objectives.
- Improve data transport characteristics.
- Compress data, or encrypt it.
- Allow cross-architecture communication.
- A 16-bit big-endian client calling a 64-bit, little-endian server.
- Allow cross-language communication.
- A TCL client calling a C++ server.
- Basic idea.
- Describe data so that its type and values can be unambiguously
determined.
- This is harder than it sounds.
- Consider the
int
. 8, 16, 32, or 64 bits? Ones- or
twos-compliment? Big-endian or little-endian>
- More complicated data (arrays, structs, classes) add more
choices and possibilities for mis-interpretations.
- The way out is to define and use a common data description.
- It's common, so everybody agrees that an
int
is a 32-bit,
twos-compliment, little-endian value.
- Most programming languages distinguish between two kinds of data types.
- Basic types have no further language-accessible structure.
- Integers, doubles, and pointers are basic types.
- Composite types are composed of other structures.
- Arrays, records, and classes are composite types.
- Data description formats make a similar distinction between basic and
composite data.
- Presentation syntax describes composite data.
- Encoding syntax describes basic data.
- Flexible RPC system allow these to be controled separately.
- Sun's External Data Representation (XDR).
- Both a presentation and encoding syntax.
- Results in subroutines that can be called to transform the data.
- CORBA's Interface Definition Language (IDL).
- Both a presentation and encoding syntax.
- Results in behind the interface transformation routines.
- RCP transport objectives.
- Implement the expected RPC semantics.
- That includes both success and failure semantics.
- Provide transport services as efficiently as possible.
- Basic idea.
- Chose the transport protocol wisely.
- Its characteristics make it easier or harder to do everything else.
- Implement RPC transport over several protocols, let the user decide.
- Either directly or indirectly.
- TCP and UDP.
- Our ol' friends, ubiquitous and familiar.
- RPC transport requirements fall between them.
- Reliable message transport.
- Transaction TCP.
- Lightweight TCP supporting reliable request-response communication.
- No three- (or four-) way handshake.
- "Transaction" means "request-response".
- Available on the *BSD operating systems (?).
- Internet Inter-ORB Protocol (IIOP)
- A TCP extension allowing transport between CORBA clients.
- HyperText Transport Protocol (HTTP)
- Another extension to TCP, this time for the World Wide Web.
- Not specifically an RPC transport protocol, but it looks a lot like
one.
- RPC management objectives.
- Identify and locate servers.
- Possibly also clients in restrictive environments.
- Support other RPC features.
- Encryption key management; accounting and billing.
- Basic idea.
- Determine server identity.
- Map the identified server to a contact address.
- Use the hair of the dog that bit you.
- Implement an RPC server for identifying RPC servers.
- Then there's the bootstrap problem.
- Management techniques break down into structural and functional
techniques.
- Structural management relies mostly on naming.
- Service name, call name, perhaps version number.
- The caller is expected to know what each service provides.
- Functional management relies mostly on behavior.
- Service function and characteristics.
- The cller need only know the servce it wants performed.
- Sun's
rpcbind
(formally known as port-mapper
.
- A purely structural management system.
- Clients specify service number and version number.
- The response is a port number on the
rpcbind
host.
- Each service registers with the local
rpcbind
.
- Registration provides the service number, port number, version number
triple.
- CORBA's Object Request Broker (ORB).
- Every CORBA object has a global, unique reference.
- It's part of object creation.
- The ORB maps between an object reference and the object's location.
- This is done implicitly, without specific action from the client (or
server).
- External servers may also provide structural or functional management.
This page last modified on 29 March 2003.