A Comparison of CORBA and Adas Distributed Systems

A Comparison of CORBA and Ada’s Distributed Systems Annex By Andrew Berns

CORBA vs DSA • • • Introduction/Background CORBA Overview DSA Overview Paper Findings Conclusion Questions

Background • Undergraduate research project • Investigation into CORBA and DSA from a beginner’s point of view

CORBA Background • 1991 by the Object Management Group (OMG) • Object-oriented approach to distributed systems • Features: – Object-oriented techniques – Language interoperability – Transparent communication layer

CORBA: The Heart • Object Request Broker (ORB) – Handles interactions between objects – Provides extra services (naming, etc. ) – Vendors create different ORBs

CORBA: Object Definition • Interface Definition Language (IDL) – Defines the interface of distributed objects – Definition only, no implementation – Uses a subset of common language features
![Sample IDL File interface Prime. Finder. Server { typedef long Integer_Array[200]; void Initialize( in Sample IDL File interface Prime. Finder. Server { typedef long Integer_Array[200]; void Initialize( in](http://slidetodoc.com/presentation_image/5392774bb7a289b1a64bc27116291841/image-7.jpg)
Sample IDL File interface Prime. Finder. Server { typedef long Integer_Array[200]; void Initialize( in long Limit ); Integer_Array Get_Array( ); boolean Finished( ); void Put_Prime( in Integer_Array primes, in long Count ); boolean Ready( ); };

CORBA: Communication • General Inter-ORB Protocol (GIOP) – Interface the ORB uses to communicate – May use any communication mechanism • Internet Inter-ORB Protocol (IIOP) – TCP/IP • UNIX Inter-ORB Protocol (UIOP) – UNIX Sockets – Allows the developer to select the right tool

CORBA: Servants, Skeletons, Stubs • Stub: for the client – Generated by the compiler for clients to use the distributed object • Skeleton: for the object (with the Portable Object Adapter (POA)) – Generated by the compiler for implementation to connect with ORB • Servant: actual implementation of the object – Done in a specific programming language

CORBA: All Together Client IDL Stub ORB Portable Object Adapter IDL Skeleton Implementation (Servant)

DSA Background • Annex E of the Ada 95 Language Specification • Distributed systems created through extension of existing language features • Features: – Availability of many of Ada’s constructs – Compilation and execution with or without distributed features

DSA: The Heart • Partitions – Each distributed “piece” of a program is represented by a partition – Distributed communication occurs between these partitions – A partition exists on a physical node, and a node may contain many partitions – Each partition has different packages with different capabilities, depending on how the developer has designated them

DSA: Package Pragmas • Remote_Call_Interface – Receives remote procedure calls from other partitions • Shared_Passive – Shared storage throughout the system • Remote_Types – Defines types to be used across the system

DSA: Communication • Partition Communication Subsystem (PCS) – How each partition communicates – Specification defined by Ada Language Specification – Implementation left up to developer – Allows freedom to choose appropriate protocol

DSA: Assembling the Pieces • After program creation, assembly is done with a configuration tool – Decides packages in partitions, and nodes

Sample DSA Configuration File configuration distprime is Starter : Partition : = (Prime. Finder. Starter, Prime. Finder. Server); procedure Prime. Finder. Starter is in Starter; Client_1 : Partition : = (Prime. Finder. Client); for Client_1'Host use "illinoiscentral"; for Client_1'Directory use "/usr/distributed/ada"; Client_2 : Partition : = (Prime. Finder. Client); for Client_2'Host use "pennsylvania"; for Client_2'Directory use "/usr/distributed/ada"; procedure Prime. Finder. Client; for Client_1'Main use Prime. Finder. Client; for Client_2'Main use Prime. Finder. Client; end distprime;

DSA: All Together Physical Node 1 Shared_Passive Partition 1 Network Physical Node 2 Remote_Call_Interface Partition 3

Software Tools • CORBA: Wide Availability – Many ORB implementations exist – both for Ada and other languages, such as Java and C++ – Here, chose to use Ada. Core’s Poly. ORB • DSA: Limited Availability – A very limited selection of DSA implementations – Here, chose to use Ada. Core’s GLADE

Findings: Qualitative • Easy to Learn: DSA – No need to worry about IDL – Easy to understand program paradigm

Findings: Qualitative • Program Creation: DSA – Much less “overhead” – Static partitions, however

Findings: Qualitative • Language Interoperability: CORBA – Built for language interoperability

Findings: Qualitative • Documentation: CORBA – Quite popular in many languages – A large number of vendor implementations available

Findings: Qualitative • Design and Development: DSA – Allows programs to run distributed or nondistributed transparently – Compiling allowed on any compiler

Findings: Quantitative

Findings: Quantitative

Conclusion • DSA is not inadequate when compared with CORBA • Seems to be a lot of untapped potential – Ada’s strong real-time embedded systems appeal – Ease of distribution after program creation

Questions
- Slides: 27