SUMMARY
INTEROPERABILITY OF CORBA AND DCE
By
Vandana M. Gunwani
Dr. Rod Fatoohi, Academic Advisor
December 10, 1999
A distributed computing system consists of a number of autonomous machines connected by some underlying communication mechanism. The machines in a distributed system may have different hardware architectures and operating systems. Middleware technologies exist to mask the underlying differences that may exist in a distributed system. Middleware technologies provide additional services that help to solve some of the problems associated with programming in a distributed environment, such as naming, transactions, security and reliability.
Open Software Foundation (OSF) Distributed Computing Environment (DCE) and Object Management Group (OMG) Common Object Request Broker Architecture (CORBA) are two such middleware technologies that support the construction and integration of client-server applications in heterogeneous distributed environments. CORBA is an emerging standard that enhances application flexibility and portability by automating many common development tasks such as object location and parameter marshaling. A large number of distributed applications are being developed using the CORBA technology. However, a significant number of complex distributed applications that were developed before CORBA, use the DCE technology. The underlying middleware components of the two platforms are incompatible. It is not cost-effective to re-implement the applications built using DCE, from scratch using CORBA. Since most of the future client/server applications will be developed using CORBA, it is essential to have a CORBA front end for existing non-CORBA applications.
In this project the performance of interoperability between CORBA and DCE was analyzed using the Inprise DCE- CORBA bridge. The bridge can be used to enable CORBA applications to use IIOP (Internet Inter-ORB Protocol) to seamlessly and securely access data and transactions from DCE applications. Bridge objects are CORBA objects that represent DCE servers. These objects are the means by which CORBA clients invoke operations on DCE servers. The bridge acts as a standard DCE client when talking to any DCE server. Thus, bridge objects act simultaneously as CORBA servers and DCE clients. In its role as a CORBA server, the bridge encapsulates DCE systems in an object wrapper that enables the object-oriented CORBA clients to access DCE data and transactions using object semantics.
The feasibility of using the bridge to interoperate between DCE and CORBA middleware is proved by the performance analysis conducted in this project. The timing results for various client/server scenarios using the bridge are given below. The timings indicate the average time for the client to ping the server. To simulate various environments, the server, bridge and client were run in different configurations ranging from all three being on the same machine to all being on different machines. To identify the impact of the programming language used, timing results for each configuration were collected using both C++ and Java as the languages used to implement the CORBA client. To evaluate the performance of the bridge for Web applications, timing results were also collected using a Java applet as the CORBA client.
|
DCE Server |
CORBA Server |
|
|
|
Client & server on one machine: 0.698 ms |
Not supported |
|
Client & server on different machines: 1.089 ms |
Not supported |
|
|
C++ CORBA Client |
Client, bridge & server on one machine: 7.832 ms |
Client & server on one machine: 0.583 ms |
|
Client & bridge on one machine, server on another: 7.996 ms |
||
|
Client on one machine, bridge & server on another: 7.856 ms |
Client & server on different machines: 0.842 ms |
|
|
Client, bridge & server on 3 different machines: 7.475 ms |
||
|
Java CORBA Client |
Client, bridge & server on one machine: 8.334 ms |
Client & server on one machine: 1.472 ms |
|
Client & bridge on one machine, server on another: 8.271 ms |
||
|
Client on one machine, bridge & server on another: 7.569 ms |
Client & server on different machines: 1.401 ms |
|
|
Client, bridge & server on 3 different machines: 7.768 ms |
||
|
|
Client, bridge & server on one machine: 11.326 ms |
Client & server on one machine: 4.373 ms |
|
Client & bridge on one machine, server on another: 10.909 ms |
||
|
Client on one machine, bridge & server on another: 28.161 ms |
Client & server on different machines: 25.807 ms |
|
|
Client, bridge & server on 3 different machines: 29.661 ms |
In this project, timing results for CORBA and OODCE were also collected to compare the performance of the bridge with DCE which is based on the procedural language C against that with OODCE which is based on the object-oriented language C++. In summary, the performance of the bridge with DCE or OODCE on the server side is approximately the same as indicated by the average times for the CORBA client to ping a OODCE server shown below:
|
OODCE Server |
CORBA Server |
|
|
|
Client & server on one machine: 0.797 ms |
Not supported |
|
Client & server on different machines: 1.127 ms |
Not supported |
|
|
C++ CORBA Client |
Client, bridge & server on one machine: 7.461 ms |
Client & server on one machine: 0.583 ms |
|
Client & bridge on one machine, server on another: 8.041 ms |
||
|
Client on one machine, bridge & server on another: 7.510 ms |
Client & server on different machines: 0.842 ms |
|
|
Client, bridge & server on 3 different machines: 7.805 ms |
||
|
Java CORBA Client |
Client, bridge & server on one machine: 7.847 ms |
Client & server on one machine: 1.472 ms |
|
Client & bridge on one machine, server on another: 7.973 ms |
||
|
Client on one machine, bridge & server on another: 7.626 ms |
Client & server on different machines: 1.401 ms |
|
|
Client, bridge & server on 3 different machines: 8.083 ms |
To sum up, the overhead incurred in using the Inprise DCE-CORBA bridge to interoperate DCE and CORBA frameworks is approximately a few milliseconds for various client/server configurations. This is an acceptable overhead when leveraging legacy applications implemented using DCE or OODCE. An existing DCE framework can be utilized without any modification to the server code or the deployed configuration.
The complete report is given (in PDF) here.