Comparing CORBA & WWW

Both CORBA and WWW (using HTTP) are distributed object oriented systems: clients invoke methods (or operations) on server objects.

In CORBA the methods a service supports are defined in an Interface Definition Language (IDL). Objects communicate with each other using Object Request Brokers (ORBs) which provide a transport protocol for passing invocation requests and replies between objects. ORBs can support multiple transport protocols and abstract the programmer from many aspects of distribution (e.g. object location). In the future all CORBA compliant ORBs will be required to support the Internet Inter-ORB Protocol (IIOP) [OMG 95], so that ORBs from different vendors can interoperate.

Many WWW services use the Hypertext Transfer Protocol (HTTP) [BERNERS-LEE 95]. This defines both a transport protocol and a set of standard methods; two of the standard methods are mandatory for all "general purpose" HTTP servers (GET and HEAD). Servers are also free to implement their own "extension" methods.

CORBA defines no standard methods which all application services are required to support. However, it does define an environment for building clients and servers which hides most of the complexity of the underlying platform from the programmer. From the IDL description of a service, client and server stubs are generated which hide the Application Programmer's Interface (API) of the underlying ORB from the application programmer. Hence remote invocation looks very similar to local invocation. This makes it relatively easy to write new clients and servers as well as making it easy to extend existing implementations -something which is important to assist integrating new information services into systems.

In contrast it is harder to write clients and servers which use HTTP, because of the need to drive the protocol stack directly - there is no equivalent to client or server stubs. Despite this a number of very sophisticated WWW clients and servers have been implemented, although I know of no server which implements any extension methods.

WWW uses Uniform Resource Locators (URLs) [BERNERS-LEE 94b] as handles to access resources. URLs are associated with a particular resource at a particular location. This can cause problems; for example if the object or resource has moved the access attempt will fail. In contrast CORBA uses opaque object references and relies on the underlying ORB to locate the remote object.

The WWW community have recognised the problems associated with URLs and are developing concepts which have much in common with CORBA's object references (e.g [SOLLINS 94]). The trick is to introduce a level of indirection between the client and server: instead of giving the client the location of the server, it is given a handle which can be resolved at runtime by the underlying infrastructure to locate the server. This is consistent with the principle that binding to a service should be done as late as possible.


Next

ANSA home page, Introduction, Comparing CORBA and WWW, Integrating third party information services, A stub Compiler for CGI, A stub Compiler for HTTP, An application scenario, Conclusions, Acknowledgements, References


Nigel Edwards <nje@ansa.co.uk>, Owen Rees <rtor@ansa.co.uk>