Comparison of XML-RPC, CORBA, RMI and RMI-IIOP
Remote object methods, such as XML-RPC, CORBA, RMI and RMI-IIOP, enable communication between programs on different computers and platforms. The programs may be written in different languages and include legacy software. The use of remote objects can make more efficient use of programs by sharing them between computers. The use of remote objects can also enable software to be replicated to prevent loss, for more efficient communications using computers that are not so far away and using the same software on different servers during peak time.
Using remote objects gives the illusion of running on one system while actually running on more than one. One side is the client and the other server. The operation should be transparent.
The table below summarises the main strengths and weaknesses of the different methods that use remote objects and describes how some may be preferred to others.
||RPC is an established technology and predates the internet. XML forms the core of many integrated systems. XML-RPC and uses the well known Internet protocol HTTP for communication between computers.
||Normally implemented as part of a commercial product.
||Free as part of Java but locked into one vendor.
||Uses Java to implement the IIOP protocol to communicate with CORBA. Java has a free CORBA implementation.
||Easy to implement as it does not require as many layers of system software as CORBA.
||CORBA-based systems are more complicated than other systems to implement as it has more layers of software
||Easy to implement with less code as it only uses Java. Uses a naming service to locate remote objects
Supports garbage collection.
||Only restricted by need to define remote interfaces as Java interfaces. There is no need for an IDL as used by CORBA.
||It is multi-language: it has over 40 implementations including Java, Python, Ruby, PHP and ASP.
||Multi-language: objects can be defined in an IDL and converted to many other programming languages, including older legacy languages.
||Centred on Java.
||Using the IIOP enables RMI to communicate with many other programming languages using CORBA.
||Only need to code the instruction to execute a method or subroutine. Rest of the operation is transparent.
||Write code in an IDL to program an object to provide required services.
||Write in Java. No IDL as the objects are defined in Java. EJB based on RMI API.
||Write all code in Java including the IIOP interface to CORBA.
||Easy implement simple data types such as integers. Implementing transfer of objects would be difficult.
XML data has many extra words as tags, therefore greater volume of data to transfer. But firewall friendly.
||Mainly simple data types such as strings. Collections of data (structs) can be transferred.
Binary transfer of data comprising a smaller volume
||Any object that can be serialised is capable of being transferred.
Binary transfer of data.
||As with RMI any object that can be serialised is capable of being transferred.
Binary transfer of data.
||Best for service-oriented integration, for remotely invoking methods on a server. Extra programming is required for high-level applications such as web services.
||CORBA offers the most services including publishing, trading and sophisticated security services.
||Only basic services are offered.
Can start and stop servers thereby saving resources
||By interfacing to CORBA RMI-IIOP can use the services offered by CORBA
||Uses standard technology for RPC, XML and HTTP.
||Open standards defined by the OMG.
||Maintained by Sun Microsystems.
||Based on OMG standards and Sun.