Interoperability is CORBA's biggest advantage over competing technologies. This module discussed a high-level view of how CORBA achieves interoperability, even down to the protocol level. This level of interoperability did not exist prior to CORBA, and the OMG is continually searching for ways to improve interoperability, effectively raising the bar and changing what the industry may realistically expect vendors to support. The momentum generated by this drive in the marketplace is surely the primary reason that so many vendors are adding CORBA support to their products. It is a trend that will continue for the foreseeable future.
Before CORBA 2.0, one of the most common complaints lodged against CORBA was its lack of standard protocol specifications.
To allow remote ORB applications to communicate, every ORB vendor had to develop its own network protocol or borrow one
from another distributed system technology. This resulted in "ORB application islands", where each one was built over a particular vendor's ORB, and thus they were unable to communicate with one another.
CORBA 2.0 introduced a general ORB interoperability architecture called the (GIOP) General Inter-ORB Protocol.
GIOP is an abstract protocol that specifies transfer syntax and a standard set of message formats to allow independently developed ORBs to communicate over any connection-oriented transport. The (IIOP) Internet Inter-ORB Protocol specifies how GIOP is implemented over
(TCP/IP)
Transmission Control Protocol/Internet Protocol. All ORBs claiming CORBA 2.0 interoperability conformance must implement GIOP and IIOP, and almost all contemporary ORBs do so.
ORB interoperability also requires standardized object reference formats. Object references are vague to applications, but they contain information that ORBs need in order to establish communications between clients and target objects.
The standard object reference format, called the Interoperable Object Reference (IOR), is flexible enough to store information for almost any inter-ORB protocol imaginable. An IOR identifies one or more supported protocols and, for each protocol, contains information specific to that
protocol.
This arrangement allows new protocols to be added to CORBA without breaking existing applications. For IIOP, an IOR contains a host name, a TCP/IP port number, and an object key that identifies the target object at the given host name and port combination.