RPC and distributed objects summary ----------------------------------- RPC: goal is to simplify development of distributed applications - abstracts away the details of communication - make remote calls as simple as local ones * on client side, user stub acts as a proxy for the remote procedure * user stub "marshals" call parameters into a message, and uses the RPC runtime library to communicate with server * server stub (skeleton) demarshals parameters and forwards request to remote procedure naming mechanism is needed to allow clients to locate servers; Grapevine filled this need in the original RPC system implemented on an unreliable datagram protocol (like UDP) advantage: less overhead for short, self-acknowledging request-response style communication disadvantage: transferring large parameters is tricky Lightweight RPC: optimize for the common case, i.e. intra-domain communication - let client threads execute requests in the server's space to avoid message-passing overhead - pre-allocate shared buffers for call parameters and results - cache domain contexts on idle processors (which must have been abundant in 1990) Network Objects: object-oriented RPC key advantage over RPC: ability to pass around remote object references, allowing transparent access to state as well as to functionality key challenge: object-oriented data structures tend to be more complex than standard ones, so marshaling parameters in a general way is a challenge CORBA: heterogeneous object-oriented RPC emphasis on supporting multiple platforms, applications, network types interfaces are expressed in CORBA IDL supports transparency of: - object location - object implementation - object execution state (running or not) - object communication mechanisms major flaws, corrected later on: - no interoperability between ORBs - can't pass objects by value Information Bus: publish/subscribe in addition to RPC goal: continuous operation while supporting dynamic evolution as well as legacy systems major application: managing constant flow of information among loosely-coupled processes