- introduction
-
low-level client-server transport is hard
- client-server
protocol design is hard
- start piling on abstractions to get
middleware
- the remote procedure call is a key abstraction for
middleware - publish-subscribe, callbacks
- the subroutine
call-return model
- procedural abstraction
- the
implementation-interface separation - the caller needs the interface,
not the implementation
- elements - single threaded, argument
passing, value return
- the rpc model
- exploit
the subroutine call-return model - familiar, understood, useful
-
the subroutine call-return model extends easily to client-server
computing - client is caller; server is called
- the subroutine
call-return model is embedded in a transport protocol - only the
specific payloads are left to the designer
- well, almost -
error semantics, data semantics, infrastructure issues
-
division into pieces can be delayed until late in the design
- sun's onc rpc
- defined by sun - RFCs rfc 1057, and rfc 1831; others include osf dce (microsoft com-dom), java
rmi
- remote program - the server; like non-static file scope in
c-c++
- externally visible procedures - the remote
procedures
- static global data - shared in the server
-
remote programs are single threaded - serialized
- server
identification
- remote programs are identified by 32-bit
unsigned numbers assigned by some authority - sun, local management,
ad-hoc
- each remore procedure is numbered from 1 by the rpc
software
- rpc assigns version numbers to remote programs
- transport level
- choice of udp or tcp
- rpc
reliatility under udp
- timeout retransmission with retry
limits
- doesn't provide semantically meaningful reliability
- weak communication semantics under udp
- error
- can't say anything; zero or more calls
- no error - at least
one call
- idempotent operations and repeated exeuctions
-
exactly one semantics is expensive and hard
-
locating remote programs
- a client has host id and a remote
program id, needs a port number
- the rpc port mapper - a
per-host server; called rpcbind these days
- host-resident remote
programs allocate a port and register with the local port mapper -
program number, protocol port number, version
- clients query the
remote port mapper for the protocol port number
-
corba rpc
- the object request broker (orb)
is the run-time system
- the internet inter-object protocol
(iiop) allows inter-orb communication
- rpc problems
- asymmetric communications - streaming media
-
asynchronous communicaions - void returns, telnet
This page last modified on 26 February 2002.