Corba Fundamentals   «Prev  Next»
Lesson 2 Levels of interoperability
Objective Explore the Different Layers of CORBA Interoperability.

Different Layers of CORBA Interoperability

This lesson will give an overview of CORBA interoperability. CORBA (Common Object Request Broker Architecture) provides a framework for distributed object-oriented systems. Interoperability is one of its core goals, allowing objects in different environments to communicate seamlessly. CORBA defines five types of interoperability to facilitate this communication:
  1. Inter-ORB Protocol (IIOP)
    • Description:
      • The Internet Inter-ORB Protocol (IIOP) is the standard wire protocol for CORBA communication over TCP/IP networks.
    • Usage:
      • Enables ORBs (Object Request Brokers) from different vendors to communicate over the internet or other TCP/IP-based networks.
    • Key Feature:
      • Ensures communication between CORBA objects regardless of their underlying ORB implementation.
  2. Object Adapter Interoperability
    • Description:
      • Object adapters act as intermediaries between the CORBA objects and the ORB. They manage requests to objects.
    • Usage:
      • Different adapters (e.g., Basic Object Adapter or Portable Object Adapter) are used to support various CORBA object lifecycles, activation policies, and invocation semantics.
    • Key Feature:
      • Provides portability and flexibility by enabling different object adapter implementations to interoperate.
  3. Bridge Interoperability
    • Description:
      • Bridges facilitate communication between different middleware systems, such as CORBA and non-CORBA systems.
    • Usage:
      • Allows CORBA systems to communicate with systems using other technologies like DCOM or Java RMI.
    • Key Feature:
      • Acts as a gateway to enable interoperation between heterogeneous systems.
  4. Domain Interoperability
    • Description:
      • Refers to interoperability within specific CORBA domains or verticals, such as telecommunications, finance, or healthcare.
    • Usage:
      • Defines standard interfaces and protocols tailored to particular industries.
    • Key Feature:
      • Provides consistency and seamless communication for CORBA applications within the same domain.
  5. Federated Interoperability
    • Description:
      • Federation involves the integration of multiple CORBA systems to appear as a single cohesive system.
    • Usage:
      • Enables interoperability in large-scale distributed systems where different CORBA environments are interconnected.
    • Key Feature:
      • Facilitates unified operation and management across distributed CORBA environments.

Summary Table
Type Description Purpose
Inter-ORB Protocol (IIOP) Standard wire protocol for CORBA over TCP/IP Ensures seamless communication between ORBs
Object Adapter Intermediary managing CORBA object requests Flexibility and portability between different adapters
Bridge Interoperability Gateway for CORBA and non-CORBA system communication Integration of heterogeneous systems
Domain Interoperability Industry-specific standardization for CORBA applications Consistency within vertical domains
Federated Interoperability Unified operation across interconnected CORBA systems Scalability and unified management in distributed systems

These interoperability types collectively enable CORBA to function as a robust and versatile framework for building distributed systems.
The following series of images below outlines the five types of CORBA interoperability.

Corba Language Interoperability Levels
1) Corba interoperability at the programming language level is based on IDL.
1) Corba interoperability at the programming language level is based on IDL. The CORBA specification includes IDL into these development languages.

2) CORBA will interoperate and seamlessly hide the difference between operating systems.
2) CORBA will interoperate and seamlessly hide the difference between operating systems. Support for all operating systems is not guaranteed by the CORBA specification though. It is only the ORB vendors that decide what OS their products support.

3) Starting with version two of the CORBA specification, a common protocol for CORBA has been defined.
3) Starting with version two of the CORBA specification, a common protocol for CORBA has been defined. The Internet Inter-ORB Protocol (IIOP) provides a standard, on-the-wire protocol for CORBA, much like HTTP for web servers.

4) The IIOP also brings ORB-level interoperability to CORBA. Because IIOP is a well defined protocol.
4) The IIOP also brings ORB-level interoperability to CORBA. Because IIOP is a well defined protocol, full interoperability between ORB products from different vendors is possible.

5) Realizing that an interoperable framework could not stop with the domain of each vendor, the OMG specified GIOP and IIOP so that all ORB prodcuts could speak a common low-level language.
5) Realizing that an interoperable framework could not stop with the domain of each vendor, the OMG specified GIOP and IIOP so that all ORB prodcuts could speak a common low-level language, at this point ORB interoperability is assured.

Bootstrapping Interoperability Problems

For interoperability, OMG specifies a protocol for the abstract CORBA object reference object, known as the Interoperable Object Reference (IOR) protocol. One obvious requirement for interoperability between different CORBA products is that they must be able to speak the same on-the-wire protocol (IIOP). However, that by itself it not sufficient. Another, less obvious requirement for interoperability is for one CORBA product to be able to find, say, the Naming Service or the Notification Service of another CORBA product. For example, how can an Orbix client find (connect to) the Naming Service of an Orbacus installation. This is often called a bootstrapping problem. The corbaloc and corbaname URLs were invented to address such bootstrapping issues, as I now discuss.
A CORBA application connects to a CORBA Service. For example, the Naming Service, Transaction Service and Notification Service by calling resolve initial references() and passing the name of the desired service as a parameter. The CORBA specification does not specify how resolve initial references() works (that is an implementation detail), but in most CORBA products this operation looks in a configuration file to find a name-of-CORBA-service!stringified-IOR mapping1 and then passes the stringified IOR as a parameter to string to object(). These mappings are normally set up during the installation and configuration of a CORBA product. To configure, say, Orbix to use an Orbacus Naming Service is a matter of obtaining a stringified IOR of the Orbacus Naming Service (typically from the Orbacus configuration file) and copying this into the Orbix configuration file. Then the next time an Orbix client calls resolve initial references ("NameService"), the client will be directed towards the Orbacus Naming Service. This technique works fine, but it is a bit cumbersome because stringified IORs are not human readable. However, with the introduction of corbaloc URLs, the technique becomes much easier. Now, instead of copying a stringified IOR of the Orbacus Naming Service into the Orbix configuration file, it is sufficient to copy a corbaloc URL into the Orbix configuration file. The fact that corbaloc URLs are easy to read (and edit) by humans makes it more feasible for an organization to use several different CORBA products.

Corba Interoperability Levels - Exercise

Let us take a look back to our SmartParts application and note the places where CORBA's interoperability is paying off for us. The following exercise identifies interoperability in SmartParts.
Corba Interoperability Levels - Exercise

SEMrush Software