RPC Robert Grimm New York University Remote Procedure Calls.

Slides:



Advertisements
Similar presentations
1 Communication in Distributed Systems REKs adaptation of Tanenbaums Distributed Systems Chapter 2.
Advertisements

What is RMI? Remote Method Invocation –A true distributed computing application interface for Java, written to provide easy access to objects existing.
Web Services Darshan R. Kapadia Gregor von Laszewski 1http://grid.rit.edu.
Remote Procedure Call (RPC)
Remote Procedure Call Design issues Implementation RPC programming
U NIVERSITY OF M ASSACHUSETTS, A MHERST Department of Computer Science Emery Berger University of Massachusetts Amherst Operating Systems CMPSCI 377 Lecture.
Tam Vu Remote Procedure Call CISC 879 – Spring 03 Tam Vu March 06, 03.
XML-RPC Remote Procedure Call (RPC) is a model that specifies how cooperating processes on different nodes in a heterogeneous computing environment can.
Remote Procedure CallCS-4513, D-Term Remote Procedure Call CS-4513 Distributed Computing Systems (Slides include materials from Operating System.
Implementing Remote Procedure Calls Andrew Birrell and Bruce Nelson Presented by Kai Cong.
Distributed components
G Robert Grimm New York University Lightweight RPC.
Tutorials 2 A programmer can use two approaches when designing a distributed application. Describe what are they? Communication-Oriented Design Begin with.
Implementing Remote Procedure Calls Authors: Andrew D. Birrell and Bruce Jay Nelson Xerox Palo Alto Research Center Presenter: Jim Santmyer Thanks to:
CS490T Advanced Tablet Platform Applications Network Programming Evolution.
Introduction to Remote Method Invocation (RMI)
OCT 1 Master of Information System Management Organizational Communications and Distributed Object Technologies Lecture 5: Distributed Objects.
490dp Prelude: Design Report Remote Invocation Robert Grimm (borrowing some from Hank Levy)
Remote Procedure Calls. 2 Announcements Prelim II coming up in one week: –Thursday, April 26 th, 7:30—9:00pm, 1½ hour exam –101 Phillips –Closed book,
Remote Procedure Calls. 2 Client/Server Paradigm Common model for structuring distributed computations A server is a program (or collection of programs)
.NET Mobile Application Development Remote Procedure Call.
Tanenbaum & Van Steen, Distributed Systems: Principles and Paradigms, 2e, (c) 2007 Prentice-Hall, Inc. All rights reserved DISTRIBUTED SYSTEMS.
T Network Application Frameworks and XML Web Services and WSDL Sasu Tarkoma Based on slides by Pekka Nikander.
Grid Computing, B. Wilkinson, 20043b.1 Web Services Part II.
CS 390- Unix Programming Environment CS 390 Unix Programming Environment Topics to be covered: Distributed Computing Fundamentals.
11 September 2008CIS 340 # 1 Topics To examine the variety of approaches to handle the middle- interaction (continued) 1.RPC-based systems 2.TP monitors.
Introduction to Distributed Systems Slides for CSCI 3171 Lectures E. W. Grundke.
CS 153 Design of Operating Systems Spring 2015 Lecture 23: Inter-Process Communication (IPC) and Remote Procedure Call (RPC)
Implementing Remote Procedure Calls Authored by Andrew D. Birrell and Bruce Jay Nelson Xerox Palo Alto Research Center Presented by Lars Larsson.
Distributed Programming CSCI 201L Jeffrey Miller, Ph.D. HTTP :// WWW - SCF. USC. EDU /~ CSCI 201 USC CSCI 201L.
1 Lecture 5 (part2) : “Interprocess communication” n reasons for process cooperation n types of message passing n direct and indirect message passing n.
 Remote Procedure Call (RPC) is a high-level model for client-sever communication.  It provides the programmers with a familiar mechanism for building.
PolyORB Versatile Middleware for Interoperable Critical Systems PolyORB Versatile Middleware for Interoperable Critical Systems Presentation cover page.
WebService. Outline Overview of Web Services SOAP (messaging) WSDL (service description) UDDI (registry)
Tanenbaum & Van Steen, Distributed Systems: Principles and Paradigms, 2e, (c) 2007 Prentice-Hall, Inc. All rights reserved RPC Tanenbaum.
IT 344: Operating Systems Winter 2008 Module 19 Networking & Remote Procedure Call (RPC) Chia-Chi Teng CTB 265.
CSE 451: Operating Systems Winter 2015 Module 22 Remote Procedure Call (RPC) Mark Zbikowski Allen Center 476 © 2013 Gribble, Lazowska,
Hwajung Lee.  Interprocess Communication (IPC) is at the heart of distributed computing.  Processes and Threads  Process is the execution of a program.
1 Developing Application in Distributed Computing Environment (DCE)
An Introduction to Web Services Web Services using Java / Session 1 / 2 of 21 Objectives Discuss distributed computing Explain web services and their.
Tanenbaum & Van Steen, Distributed Systems: Principles and Paradigms, 2e, (c) 2007 Prentice-Hall, Inc. All rights reserved DISTRIBUTED SYSTEMS.
09/14/05 1 Implementing Remote Procedure Calls* Birrell, A. D. and Nelson, B. J. Presented by Emil Constantinescu *ACM Trans. Comput. Syst. 2, 1 (Feb.
Lecture 4 Mechanisms & Kernel for NOSs. Mechanisms for Network Operating Systems  Network operating systems provide three basic mechanisms that support.
Web Services An Introduction Copyright © Curt Hill.
© Oxford University Press 2011 DISTRIBUTED COMPUTING Sunita Mahajan Sunita Mahajan, Principal, Institute of Computer Science, MET League of Colleges, Mumbai.
A service Oriented Architecture & Web Service Technology.
Topic 4: Distributed Objects Dr. Ayman Srour Faculty of Applied Engineering and Urban Planning University of Palestine.
Object Interaction: RMI and RPC 1. Overview 2 Distributed applications programming - distributed objects model - RMI, invocation semantics - RPC Products.
Prof. Leonardo Mostarda University of Camerino
T Network Application Frameworks and XML Web Services and WSDL Sasu Tarkoma Based on slides by Pekka Nikander.
What is RMI? Remote Method Invocation
Implementing RPC by Birrell & Nelson
Programming Models for Distributed Application
Inventory of Distributed Computing Concepts and Web services
CSE 451: Operating Systems Winter 2006 Module 20 Remote Procedure Call (RPC) Ed Lazowska Allen Center
DISTRIBUTED COMPUTING
Lecture 4: RPC Remote Procedure Call Coulouris et al: Chapter 5
CSE 451: Operating Systems Autumn 2003 Lecture 16 RPC
CSE 451: Operating Systems Winter 2007 Module 20 Remote Procedure Call (RPC) Ed Lazowska Allen Center
Lecture 4: RPC Remote Procedure Call CDK: Chapter 5
CSE 451: Operating Systems Winter 2004 Module 19 Remote Procedure Call (RPC) Ed Lazowska Allen Center
CSE 451: Operating Systems Spring 2012 Module 22 Remote Procedure Call (RPC) Ed Lazowska Allen Center
CSE 451: Operating Systems Autumn 2009 Module 21 Remote Procedure Call (RPC) Ed Lazowska Allen Center
Remote Procedure Call Hank Levy 1.
WebServices Using JAX-RPC
Remote Procedure Call Hank Levy 1.
CSE 451: Operating Systems Autumn 2010 Module 21 Remote Procedure Call (RPC) Ed Lazowska Allen Center
CSE 451: Operating Systems Winter 2003 Lecture 16 RPC
Remote Procedure Call Hank Levy 1.
CSE 451: Operating Systems Messaging and Remote Procedure Call (RPC)
Presentation transcript:

RPC Robert Grimm New York University Remote Procedure Calls

Assignments  You need (more) time for interoperability testing!  Your server should be running by midnight Sunday  Assignment 3 test case posted  Due tomorrow by 5pm  Assignment 4 posted  Due in two weeks  Start thinking about assignment 5  Build your own web application  On top of SOAP or HTTP

RPC: The One Slide Overview  Goal: Make remote interactions real easy  Approach: Use procedure calls  Well-established way to transfer control and data

Remote Procedure Calls by Hank Levy (UW)

Clients and Servers  A common model for structuring distributed computation is via the client/server paradigm  A server is a program (or collection of programs) that provide some service, e.g., file service, name service, …  The server may exist on one or more nodes.  A client is a program that uses the service.  A client first binds to the server, I.e., locates it in the network and establishes a connection.  The client then sends requests to perform actions; this is done by sending messages that indicate which service is desired, along with params. The server returns a response.

The Problem with Messages  While messages provide very flexible communication, they also have certain problems:  requires that programmer worry about message formats  messages must be packed and unpacked  messages have to be decoded by server to figure out what is requested  messages are often asynchronous  they may require special error handling functions  Basically, messages are not a natural programming model for most programmers.

Procedure Call  A more natural way to communicate is through procedure call:  every language supports it  semantics are well defined and understood  natural for programmers to use  Basic idea: let’s just define a server as a module that exports a set of procedures that can be called by client programs.  To use the server, the client just does a procedure call, as if it were linked with the server call return ClientServer

(Remote) Procedure Call  So, we would like to use procedure call as a model for distributed communication.  Lots of issues:  how do we make this invisible to the programmer?  what are the semantics of parameter passing?  how is binding done (locating the server)?  how do we support heterogeneity (OS, arch., language)  etc.

Remote Procedure Call  The basic model for Remote Procedure Call (RPC) was described by Birrell and Nelson in 1980, based on work done at Xerox PARC.  Goals was to make RPC look as much like local PC as possible.  Used computer/language support.  There are 3 components on each side:  a user program (client or server)  a set of stub procedures  RPC runtime support

RPC  Basic process for building a server:  Server program defines the server’s interface using an interface definition language (IDL)  The IDL specifies the names, parameters, and types for all client-callable server procedures  A stub compiler reads the IDL and produces two stub procedures for each server procedure: a client-side stub and a server-side stub  The server writer writes the server and links it with the server-side stubs; the client writes her program and links it with the client-side stubs.  The stubs are responsible for managing all details of the remote communication between client and server.

RPC Stubs  Basically, a client-side stub is a procedure that looks to the client as if it were a callable server procedure.  A server-side stub looks to the server as if it’s a calling client.  The client program thinks it is calling the server; in fact, it’s calling the client stub.  The server program thinks it’s called by the client; in fact, it’s called by the server stub.  The stubs send messages to each other to make the RPC happen.

RPC Call Structure call foo(x,y) proc foo(a,b)call foo(x,y) proc foo(a,b) begin foo... end foo client program client stub RPC runtime RPC runtime server stub server program Call client makes local call to stub proc. stub builds msg packet, inserts params runtime sends msg to remote node server is called by its stub stub unpacks params and makes call runtime receives msg and calls stub call foo send msg call foo msg received

RPC Return Structure call foo(x,y) proc foo(a,b)call foo(x,y) proc foo(a,b) begin foo... end foo client program client stub RPC runtime RPC runtime server stub server program return client continues stub unpacks msg, returns to caller runtime receives msg, calls stub server proc returns stub builds result msg with output args runtime responds to original msg return msg received return send msg

RPC Binding  Binding is the process of connecting the client and server  The server, when it starts up, exports its interface, identifying itself to a network name server and telling the local runtime its dispatcher address.  The client, before issuing any calls, imports the server, which causes the RPC runtime to lookup the server through the name service and contact the requested server to setup a connection.  The import and export are explicit calls in the code.

RPC Marshalling  Marshalling is the packing of procedure parameters into a message packet.  The RPC stubs call type-specific procedures to marshall (or unmarshall) all of the parameters to the call.  On the client side, the client stub marshalls the parameters into the call packet; on the server side the server stub unmarshalls the parameters in order to call the server’s procedure.  On the return, the server stub marshalls return parameters into the return packet; the client stub unmarshalls return parameters and returns to the client.

RPC Final  RPC is the most common model now for communications in distributed applications.  RPC is essentially language support for distributed programming.  RPC relies on a stub compiler to automatically produce client/server stubs from the IDL server description.  RPC is commonly used, even on a single node, for communication between applications running in different address spaces. In fact, most RPCs are intra-node.

Some Recent RPC Systems: RMI, XML-RPC, and SOAP

RMI: Java’s Remote Method Invocation  Transparency  A lot, includes distributed garbage collection  But requires special stub compiler (for clients)  Parameter passing  By value and by reference  Binding  Traditional name server  Heterogeneity  Supports only Java

XML-RPC: XML-based RPC over HTTP  Transparency  Depending on language, possible for service objects  Need to explicitly create invocations on client  Need to map complicated objects to XML  Parameter passing  By value only  Binding  Not specified, need to hardcode servers  Heterogeneity  Some, but a very simple data model

XML-RPC Structure Encoding  givenName Joseph …  Can we do better?

SOAP: XML-based Messages Mostly over HTTP  Transparency  Depending on language, possible for service objects  Need to explicitly create invocations on client  Need to map complicated objects to XML  Parameter passing  By value only  Binding  UDDI, WSDL  Heterogeneity  Very much, data model based on XML Schema

SOAP (cont.)  Not limited to RPC  Supports asynchronous messaging as well  Supports free-form XML as well

An Example SOAP-RPC Request 

An Example SOAP-RPC Response  3.0

Discussion  Why XML-RPC and SOAP, and not (say) CORBA?  XML-based  HTTP as transport protocol  Relative simplicity (?)  What are the pitfalls of RPC?  New classes of failures  Timing differences  As a result, transparency can be misleading