Interprocess Communication and Middleware
description
Transcript of Interprocess Communication and Middleware
Interprocess Communicationand
Middleware
Sockets and Ports
Source: G. Coulouris et al., Distributed Systems: Concepts and Design
Node 1 Node 2
Crossing Hosts/Platforms
Source: G. Coulouris et al., Distributed Systems: Concepts and Design
Provisions of Middleware
• Higher-level abstractions (RPC, RMI, …)
• Location transparency
• Independent of communication protocols
• Independent of hardware/operating systems
• Use of several programming languages
The Middleware layer
Source: G. Coulouris et al., Distributed Systems: Concepts and Design
* The operating system includes common network protocols (TCP/IP, …).
Request-Reply Communication
Source: G. Coulouris et al., Distributed Systems: Concepts and Design
Request-Reply Communication Using HTTP
Source: G. Coulouris et al., Distributed Systems: Concepts and Design
HTTP request message:
HTTP reply message:
Serialization (Marshalling)
Source: G. Coulouris et al., Distributed Systems: Concepts and Design
Distributed Objects
The object-based programming model is extended
to allow objects in different processes to interact
with one another.• Client/Server• Object References• Interfaces• Remote Method Invocation• Exceptions
A CORBA IDL Example
Source: G. Coulouris et al., Distributed Systems: Concepts and Design
Local and Remote Method Invocations
Source: G. Coulouris et al., Distributed Systems: Concepts and Design
A Remote Object and Its Interface
Source: G. Coulouris et al., Distributed Systems: Concepts and Design
Client Proxy (Stub) and Server Skeleton (Stub)
Source: G. Coulouris et al., Distributed Systems: Concepts and Design
The RMI Software
• Proxy: the local representative of the remote object.
• Dispatcher: relays a request to the appropriate skeleton method.
• Skeleton: unmarshals the request and invokes the corresponding method in the remote object.
RPC/RMI Semantics
Source: G. Coulouris et al., Distributed Systems: Concepts and Design
Java Remote Interfaces
Source: G. Coulouris et al., Distributed Systems: Concepts and Design
A Java Server
Source: G. Coulouris et al., Distributed Systems: Concepts and Design
A Java Server (cont’d)
Source: G. Coulouris et al., Distributed Systems: Concepts and Design
A Java Client
Source: G. Coulouris et al., Distributed Systems: Concepts and Design
CORBA
• Defined by OMG to hide the intricacies of network programming.
• An ORB (Object Request Broker) receives invocations from a client and deliver them to a target object.
• The main communication protocol is GIOP (General Inter-ORB Protocol), known as IIOP when implemented over the Internet.
The CORBA Architecture
Source: G. Coulouris et al., Distributed Systems: Concepts and Design
CORBA Object Interfaces
• Each object has an interface defined in IDL.
• An interface defines the operations that can be called by the clients.
• An interface can be implemented in one language and called from by another.
• The CORBA IDL includes features such as inheritance of interfaces, exceptions, and compound data types.
CORBA Programming with Java
• Define the interfaces using IDL and compile them into Java interfaces.
• Implement the interfaces with Java classes.
• Write a server main function that creates instances of these classes and then inform the underlying CORBA implementation.
• Register the server.
• Write a client main function to connect to the server and to use server’s objects.
CORBA IDL Interfaces: Shape and ShapeList
Source: G. Coulouris et al., Distributed Systems: Concepts and Design
Java Interface Generated from the CORBA Interface ShapeList
Source: G. Coulouris et al., Distributed Systems: Concepts and Design
Java Implementation of Shapelist
Source: G. Coulouris et al., Distributed Systems: Concepts and Design
Java Implementation of ShapeList (cont’d)
Source: G. Coulouris et al., Distributed Systems: Concepts and Design
Java Implementation of a ShapeList Client
Source: G. Coulouris et al., Distributed Systems: Concepts and Design