Fundamentals of Distributed Object Systems: The CORBA Perspective