In very simple terms middleware allows the transfer of data between devices of different architecture possible running on different operating systems and possible running applications written in different languages. The longest standing implementation of a middleware product is Sun’s RPC (Remote Procedure Call), this allows a program to call a procedure on a remote machine without changing the semantics of the program [OPSYSp569]. RPC is still used heavily in distributed systems, NFS (Network File System) in UNIX uses RPC to mount remote file systems on a local machines. This is a good example of RPC as UNIX operating systems are written in the C programming language, a procedural language, all of which integrate nicely together. However RPC is not a middleware as we know it today. In the 1990s however, objects are being used in almost every area to help the development of computing systems, object-oriented programming, analysis and design. The most widely used object-oriented middleware is an ORB (Object Request Broker), an ORB provides all the services a RPC user is used to plus more, ORBs will provide the basis of this report.