Remote Procedure Call .NET Mobile Application Development
Download
Report
Transcript Remote Procedure Call .NET Mobile Application Development
.NET Mobile Application Development
Remote Procedure Call
Introduction
In previous sessions we have considered
> distributed applications and their characteristics
> mobile devices, applications and services; characteristics and
limitations
Remote Procedure Call (RPC)
> is an historically important distributed computing technology; many
of today’s distributed computing technologies (e.g. XML Web
services) are refinements of RPC.
In this session we consider RPC to gain an
appreciation of how modern RPC-based distributed
technologies work
RPC – A History
Remote Procedure Call (RPC)
> Historically, one of the most important distributed software technologies
and still extensively used today
- MSBlast/LovSan worm exploited weakness in Windows RPC layer in
Summer 2003
Allows a client to call a procedure in a process on a remote
computer
Arguments can be passed to the remote procedure and
values returned from it
Communicating with a distributed component is (almost !)
as simple as a normal procedure call
Interfaces
Interfaces
> Control possible interactions between software modules
> Specify procedures / variables that can be accessed from other modules
RPC and interfaces
> interface used to define procedures of a module that are available for
calling remotely
> Parameters marked as
- Input – sent to remote module in request message
- Output – returned from remote module in reply message
> Only procedures can be accessed; variables cannot be accessed directly
> Either defined by the source language or externally with an Interface
Definition Language (IDL)
Middleware and RPC
RPC is middleware
> RPC programming model is layered above basic communication and
process management provided by OS
- Offers location transparency
- Independence from underlying data transport protocols
- Uses standard data representation to mask differences in hardware
and OS data representation
RPC uses a request-reply protocol
> Parameters to remote procedure sent as request message to remote
module
> Remote module executes procedure with given parameters
> Return values passed back in reply message
RPC Semantics
Semantics of remote procedure invocation differ to those
of local invocations due to need to deal with potential
network failures
Invocation semantics of RPC vary between
implementations but are generally either
> at-most-once
- Remote procedure is guaranteed to be executed exactly zero or one
times
> at-least-once
- Remote procedure is guaranteed to be executed one or more times
> What are the semantics of a local procedure call?
RPC Implementation
Client has communication module and one stub procedure for each
procedure in the service interface
> Stub is
- Proxy for remote procedure called locally by client
- Marshals arguments into message which is sent to remote module by
communication module
Server has communication module and dispatcher plus one server
stub and one procedure for each procedure in service interface
> Dispatcher chooses server stub to receive message
> Server stub
- Unmarshals arguments from message and invokes procedure
- Marshals return values from procedure into message which is sent to client by
communication module
RPC Implementation…
RPC Operation
Implementation of RPC is designed to cope with potential
failures
At A (client stub/communication module)
> arguments packed into buffer for transfer across network
> RPC identifier generated; timer set
At B (dispatcher)
> arguments unpacked from message
> RPC identifier noted
Remote Procedure Call
At C (server stub / server procedure)
> procedure is called with arguments
At D (server stub / communication module)
> return arguments packed into buffer
> another timer is set
At E (client stub / communication modules)
>
>
>
>
arguments unpacked from message
timer set at A is disabled
acknowledgement sent for this RPC identifier
timer set at D is disabled
RPC and Failures
Client Failure
>
>
>
>
>
May occur after sending request
Orphan remote call will still go ahead
Timer at D will expire; no acknowledgement will be received
Server made permanent state changes as result of call?
When client restarts it may repeat call; no way for RPC service to detect the
repeat
Server Failure
> May occur before call is received or during the call
- at B, after request is received but before procedure is called
- at C, during the procedure call
- at D, after procedure call but before result is sent
> Timeout at A will occur
> Most systems do not handle roll-back of state changes for incomplete RPC calls
RPC Language Integration
How should RPC be integrated with programming
languages?
Distribution transparency
> Should remote procedure calls appear the same as local calls in the code (i.e.
hiding the distribution from the programmer)?
> Arguments for and against transparency. If transparency is allowed, remote call
semantics may differ
Argument marshalling
> Should user-defined types be allowed as arguments? How does system pack
them into messages?
Type checking
> Can compiler perform static, compile-time checking of arguments for remote
procedure calls?
Summary
In this session we have discussed
> Remote Procedure Call
> RPC implementation and operation
> RPC language integration issues
In the next session we will consider the creation and use
of XML Web services, a modern cross-platform
distributed computing technology which supports RPClike interaction between components of a distributed
application
Reading and Resources
Reading
Coulouris, Dollimore & Kindberg, Distributed
Systems - Concepts and Designs, 3rd
edition, Addison-Wesley, 2001