Documente Academic
Documente Profesional
Documente Cultură
• Inter-process communication
– Characteristics of IPC
– Synchronous and asynchronous communication
– External data representation and marshalling
Inter-process • CORBA’s Common Data Representation
• Java Object serialisation
communication – Client-Server Communication
• Client-Server Communication
• Communication within services provided by a group of servers:
– Group Communication
Dr Simon Blake – IP multicast
1
Messaging basics Synchronisation
• API (application programming interface) • Synchronisation
– In the context of this lecture this refers to an interface for – Synchronous (blocking)
application programmers to use either UDP or TCP
• Sender is ‘blocked’, i.e. is frozen during send until the receive
message is returned
• Message passing has two fundamental operations • Sender and receiver synchronise
– Send and Receive (Request and Reply) – Asynchronous (non-blocking)
– i.e. one process sends the other receives • Sender can carry on processing once the message is sent
– Simply requires both destinations and messages (i.e. copied to some local buffer)
– May involve synchronisation
– Current systems tend to be synchronous
• BUT… – Non-blocking adds complexity into software code
– How does this occur?
process communication
Port: 1
Port: 1
– Reliability
• Reliable systems should not corrupt messages even if
packets are lost or dropped client server
2
Process communication & Sockets Process communication
ports
– Other methods:
– setSoTimeout
– connect
3
API & IP: UDP communication API & IP: UDP communication
• In Java • In Java
• A DatagramPacket class contains:
The message Length of message Internet address Port
In Java a DatagramPacket is sent and received thus:
• i.e.
3432 543 4531 13 145.25.123.871 589
aSocket.send(myPacket);
aSocket.recieve(myPacket);
In Java a DatagramPacket is constructed:
Note: aSocket is an instantiated instance of the Java DatagramSocket class.
myPacket = new DatagramPacket(m,args[0].length(), aHost, serverPort);
Interested readers are referred to the course text (pages 138 and 139) for
Note: the DatagramPacket contains the host address (aHost) and the host port more detailed implementations of UDP client and servers
(serverPort)
API & IP: TCP communication API & IP: TCP streaming
API & IP: TCP streaming API & IP: TCP streaming
4
API & IP: TCP streaming API & IP: UDP communication
5
API & IP: External data & API & IP: External data &
Marshalling Marshalling
• We shall take a brief look at:
– Essentially there are two methods
– CORBA and the common data representation
• 1. Agree an external format
– Java Object serialisation
– Sender converts to external format
– Receiver converts to their local format – XML
• 2. The data is sent using the format with an
indication of the format that is used. – CORBA and JAVA use a binary external data
representation
– XML uses a textual representation
– Either is fine – so long as both the send and receiver
know which is being used,
6
JAVA serialisation JAVA serialisation
What is written? • So what gets serialised…
1. Class information
public class Person implements Serilizable {
name of the class, version and methods private String name;
private String place; private long DOB;
2. The data public Person(String inName, String inPlace,
long inDOB){ The class Class + its data
3. Any referenced classes name=inName;
information
place = inPlace;
3.1 This involves writing their class information DOB = inDOB;
}
3.2. And.. their data too }
DOB 1976
And so on as a recursive procedure
7
Client Server Communication Object References
doOperation(RemoteObjectReference o, int methodId, byte[] arguments)
• Client invoking a remote object
arguments is the marhsaled data
– Sends message to server
methiodId the method being remotely invoked
– Specifies the object that contains the method
o a reference to the remote object
• This requires a reference
getRequest();
• Solution = use an object reference
collects a request from a server port
– Object references are passed with the message request
– Object references need to be unique
sendReply(byte[] reply, InetAddress clientHost, int clientPort); • Unique can be guaranteed using the following as a Object
sends the request back to the cleint Reference
32 bits 32 bits 32 bits 32 bits
reply is the marshalled data
Internet Address Port Time Object Number Interface of
remote object
8
Client Server Communication Group communication
• TCP streams for C/S messaging – Multicast
– Can be useful for client server message exchanges • Pair wise communication is not always the most efficient or
desired
– This method allows large amounts of data streams to • Multiple servers might provide similar services
be exchanged without the need for sending and • It might then be more efficient to request the service from
managing numerous datagram packets either server
• i.e. serialised objects are typically large
– Eliminates the need for histories, duplicate checking – Benefits of multicast
etc. as the transmission control protocol provides • Fault tolerance
these facilities • Discovery services
• Better performance through replication
• Useful for event notifications