Overview of RPC Systems Distributed Systems Sun RPC DCE RPC RPC Case Studies DCOM CORBA Java RMI Paul Krzyzanowski pxk@cs.rutgers.edu XML RPC, SOAP/.NET, AJAX, REST Except as otherwise noted, the content of this presentation is licensed under the Creative Commons Attribution 2.5 License. Page 1 Page 1 Page 2 Page 2 Sun RPC RPC for Unix System V, Linux, BSD, OS X – Also known as ONC RPC (Open Network Computing) Sun RPC Interfaces defined in an Interface Definition Language (IDL) – IDL compiler is rpcgen Page 3 Page 3 Page 4 RPC IDL rpcgen name.x rpcgen name.x produces: program GETNAME { – name.h header version GET_VERS { – name_svc.c server stub (skeleton) long GET_ID(string<50>) = 1; – name_clnt.c client stub string GET_ADDR(long) = 2; – [ name_xdr.c ] XDR conversion routines } = 1; /* version */ } = 0x31223456; • Function names derived from IDL function names and version numbers • Client gets pointer to result – Allows it to identify failed RPC (null return) Page 6 Page 7 1
What goes on in the system: server What goes on in the system: client • Client calls clnt_create with: Start server – Name of server – Server stub creates a socket and binds any – Program # available local port to it – Version # – Calls a function in the RPC library: – Protocol# • svc_register to register {program#, port #} • clnt_create contacts port mapper on that • contacts portmapper (rpcbind on SVR4) : server to get the port for that interface – Name server – Keeps track of – early binding – done once, not per procedure call {program#,version#,protocol} port# bindings – Server then listens and waits to accept connections Page 8 Page 9 Advantages • Don’t worry about getting a unique transport address (port) – But with SUN RPC you need a unique program number per server – Greater portability DCE RPC • Transport independent – Protocol can be selected at run-time • Application does not have to deal with maintaining message boundaries, fragmentation, reassembly • Applications need to know only one transport address – Port mapper • Function call model can be used instead of send/receive Page 10 Page 11 Page 11 DCE RPC DCE RPC • Similar to Sun’s RPC • DCE : set of components designed by The Open Group (merger of OSF and X/Open) for • Interfaces written in a language called providing support for distributed applications Interface Definition Notation ( IDN ) – Distributed file system service, time service, – Definitions look like function prototypes directory service, … • Run-time libraries – One for TCP/IP and one for UDP/IP • Room for improvement in Sun RPC • Authenticated RPC support with DCE security services • Integration with DCE directory services to locate servers Page 12 Page 13 2
Unique IDs IDN compiler Sun RPC required a programmer to pick a Similar to rpcgen: “unique” 32 -bit number Generates header, client, and server stubs DCE: get unique ID with uuidgen – Generates prototype IDN file with a 128-bit Unique Universal ID (UUID) – 10-byte timestamp multiplexed with version number – 6-byte node identifier (ethernet address on ethernet systems) Page 14 Page 15 Service lookup DCE service lookup Sun RPC requires client to know name of server Request service service? lookup from cell DCE allows several machines to be organized directory server cell client into an administrative entity dir server Return server cell (collection of machines, files, users) server machine name Cell directory server Each machine communicates with it for cell services information Page 16 Page 17 DCE service lookup DCE service lookup Connect to Connect to service endpoint mapper and request service and get remote procedure cell cell client client port binding from execution dir server dir server this local name server service? port local RPC local dir server server dir server dced dced SERVER SERVER Page 18 Page 19 3
Sun and DCE RPC deficiencies Marshaling Standard formats for data • If server is not running – Service cannot be accessed – NDR: Network Data Representation – Administrator responsible for starting it Goal • If a new service is added – Sender can (hopefully) use native format – There is no mechanism for a client to discover this – Receiver may have to convert • Object oriented languages expect polymorphism – Service may behave differently based on data types passed to it Page 20 Page 21 The next generation of RPCs Microsoft DCOM Support for object oriented languages Page 22 Page 22 Page 23 Page 23 Microsoft DCOM Activation on server OLE/COM Service Control Manager (SCM, part of COM library) DCOM: Windows NT 4.0, fall 1996 – Connects to server SCM – Requests creation of object on server Extends Component Object Model (COM) to allow objects to communicate between machines Surrogate process runs components – Loads components and runs them Can handle multiple clients simultaneously Page 24 Page 25 4
Beneath DCOM MIDL Data transfer and function invocation MIDL files are compiled with an IDL compiler DCE IDL + object definitions • Object RPC ( ORPC ) • Extension of the DCE RPC protocol Generates C++ code for marshaling and unmarshaling Standard DCE RPC packets plus: – Interface pointer identifier (IPID) – Client side is called the proxy • Identifies interface and object where the call will be – Server side is called the stub processed • Referrals: can pass remote object references both are COM objects that are loaded – Versioning & extensibility information by the COM libraries as needed Page 26 Page 27 Remote reference lifetime Cleanup Object lifetime controlled by remote reference Abnormal client termination counting – No message to decrement reference count set to – RemAddRef , RemRelease calls server – Object elided when reference count = 0 Pinging – Server has pingPeriod , numPingsToTimeOut – Relies on client to ping • background process sends ping set – IDs of all remote objects on server – If ping period expires with no pings received, all references are cleared Page 28 Page 29 Microsoft DCOM improvements • Fits into Microsoft COM • Generic server hosts dynamically loaded objects – Requires unloading objects (dealing with dead clients) – Reference counting and pinging CORBA • Support for references to instantiated objects • But… DCOM is a Microsoft -only solution – Doesn’t work well across firewalls Page 30 Page 31 Page 31 5
CORBA CORBA Common Object Request Architecture Basic paradigm: – Evolving since 1989 – Request services of a distributed object Standard architecture for distributing objects • Interfaces are defined in an IDL • Distributed objects are identified by object Defined by OMG ( Object Management Group ) reference – Consortium of >700 companies Object Request Broker ( ORB ) Goal: provide support for distributed, heterogeneous object-oriented applications – delivers request to the object and returns results to the client – Specification is independent of any language, OS, network – = set of code that implements RPC Page 32 Page 33 CORBA logical view Assessment • Reliable, comprehensive support for managing object services implementation client • Standardized Generated • Complex Generated skeleton code stub code – Steep learning curve ORB – Integration with languages not always straightforward • Pools of adoption • Late to ride the Internet bandwagon (IIOP) Page 34 Page 35 Java RMI • Java language had no mechanism for invoking remote methods • 1995: Sun added extension Java RMI – Remote Method Invocation ( RMI ) – Allow programmer to create distributed applications where methods of remote objects can be invoked from other JVMs Page 36 Page 36 Page 37 6
RMI components Interoperability RMI is built for Java only! Client – No goal of OS interoperability (as CORBA) – Invokes method on remote object – No language interoperability (goals of SUN, DCE, and CORBA) Server – No architecture interoperability – Process that owns the remote object No need for external data representation – All sides run a JVM Object registry – Name server that relates objects with names Benefit: simple and clean design Page 38 Page 39 New classes New classes • remote class : • remote class : – One whose instances can be used remotely – One whose instances can be used remotely – Within its address space: regular object – Within its address space: regular object needed for remote objects – Other address spaces: can be referenced with an – Other address spaces: can be referenced with an object handle object handle • serializable class : • serializable class : – Object that can be marshaled – Object that can be marshaled – If object is passed as parameter or return value of – If object is passed as parameter or return value of a remote method invocation, the value will be a remote method invocation, the value will be needed for parameters copied from one address space to another copied from one address space to another • If remote object is passed, only the object handle is • If remote object is passed, only the object handle is copied between address spaces copied between address spaces Page 40 Page 41 Stubs Naming service Generated by separate compiler Need a remote object reference to perform remote object invocations rmic – Produces Stubs and skeletons for the remote interfaces are generated (class files) Object registry does this: rmiregistry Page 42 Page 43 7
Recommend
More recommend