Interprocess Communication in Distributed Systems

Here some brief notions about CORBA and RMI.

CORBA

CDR (Common Data Representation) represents all data type used as arguments and return values

  • 15 primitive types such as short, long, unsigned short, unsigned long, float double, char, boolean, octect, etc
  • any represents any basic or construct type.
  • Primitive types: transmitted in sender’s ordering, floating point follows IEEE.
  • Construct types: primivite values comprising one of this, sequence, string, array, struct, enumerated, union
  • string represented as a unsigned short for length and the string itself
  • The type of a data is not given with the data representation, it is supposed to be known by both sender and receiver.

RMI Serialization

  • Information included with the serialized Class: Class name and version.
  • When an object is serialized, objects referenced by this are serialized too.
  • References are serialized as handlers, correspondence 1:1 object-handler to avoid overwriting.
  • Primitive types are written in a portable binary format.
  • Chars and String written using UTF.
ObjectOutputStream.writeObject(<object>);
 
object = ObjectinputStream.readObject()
  • Reflection makes serialization/deserialization completely generic.

Remote Object Reference

  • Identifier valid throughout a distributed system.
  • Must be unique and not reusable
  • e.g. address + port number + time + object tumber