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 PrimeFinderServer { 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 Client IDL Stub 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 := (PrimeFinderStarter, PrimeFinderServer); procedure PrimeFinderStarter is in Starter; Client_1 : Partition := (PrimeFinderClient); for Client_1'Host use "illinoiscentral"; for Client_1'Directory use "/usr/distributed/ada"; Client_2 : Partition := (PrimeFinderClient); for Client_2'Host use "pennsylvania"; for Client_2'Directory use "/usr/distributed/ada"; procedure PrimeFinderClient; for Client_1'Main use PrimeFinderClient; for Client_2'Main use PrimeFinderClient; end distprime; DSA: All Together Physical Node 1 Shared_Passive Partition 1 Network Physical Node 2 Remote_Call_Interface Partition 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 AdaCore’s PolyORB • DSA: Limited Availability – A very limited selection of DSA implementations – Here, chose to use AdaCore’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 Single-Node Perform ance 100 90 80 70 Time 60 CORBA DSA 50 40 30 20 10 0 1 2 3 4 5 Processes 6 7 8 9 Findings: Quantitative Multiple-Node Perform ance 80 70 60 Time 50 CORBA DSA 40 30 20 10 0 1 2 3 4 5 Nodes 6 7 8 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