Distributed Systems: Concepts and Design
To study CORBA as a middleware design that allows clients to communicate with distributed objects in spite of all aspects of heterogeneity (programming languages, hardware, operating systems, networks and implementors).
To be able to write CORBA client and server programs and have a working knowledge of the CORBA IDL.
To get an overview of the main CORBA services.
CORBA consists of generic services as well as a language-independent RMI framework.
The RMI framework defines an architecture, an IDL, an external data representation (CDR studied in Section 4.3.1) and a standard for remote object references.
CORBA objects have IDL interfaces and remote object references, but may be implemented in any language, even non-object-oriented languages (e.g. C).
CORBA IDL (unlike Java) cannot define classes. Therefore, instances cannot be passed as arguments, although complex data structures and remote object references can. Point out the similarity with Java RMI in that a parameter whose type is a remote interface is used to pass a remote object reference and other parameters are passed by value.
The CORBA architecture in Figure 17.6 is similar to the general RMI architecture in Figure 5.6. But CORBA adds the object adaptor, implementation repository and interface repository.
Students attempting to use CORBA may encounter problems with the following:
Sections 5.1-2 are pre-requisites for this chapter.
Recall the five aspects of heterogeneity from Chapter 1 and discuss how middleware can address them in order to provide RMI. Possibly mention that CORBA 1.0 (before CDR) did not publish a specification of external data representations, so implementations made by different vendors may not have been able to communicate with one another.
The programming example in Section 17.2.1 is for study with a view to carrying out practical work using Java CORBA.
Motivate the need for the CORBA dynamic invocation interface and then compare this approach with Java's class downloading.
Section 5.2.5 on object activation could be studied before discussing activation of objects by the object adaptor and through the implementation repository. This needs to be understood before the discussion of remote object references in Section 17.2.4.
A study of CORBA IDL can be motivated by a discussion of what sort of entities can be passed in a language environment that is not necessarily object-oriented (e.g. structs and sequences composed in any complexity, but not instances of classes). The need for exceptions should be emphasized. Exercises 17.1-12 illustrate some points related to IDL.
The Naming Service can be compared with the naming criteria discussed in Section 9.1.
Section 5.4 should be studied before the sections on the CORBA Event and Notification Services.
Chapter 7 provides the background for understanding the CORBA Security Service.
Practical work involving the use of a CORBA system would help to reinforce this chapter. (See Exercises 17.1-12).