A Comparison of CORBA and Ada’s Distributed Systems Annex
description
Transcript of A Comparison of CORBA and Ada’s Distributed Systems Annex
![Page 1: A Comparison of CORBA and Ada’s Distributed Systems Annex](https://reader036.fdocuments.us/reader036/viewer/2022062322/56815147550346895dbf689e/html5/thumbnails/1.jpg)
A Comparison of CORBA and Ada’s Distributed Systems
Annex
By Andrew Berns
![Page 2: A Comparison of CORBA and Ada’s Distributed Systems Annex](https://reader036.fdocuments.us/reader036/viewer/2022062322/56815147550346895dbf689e/html5/thumbnails/2.jpg)
CORBA vs DSA
• Introduction/Background
• CORBA Overview
• DSA Overview
• Paper Findings
• Conclusion
• Questions
![Page 3: A Comparison of CORBA and Ada’s Distributed Systems Annex](https://reader036.fdocuments.us/reader036/viewer/2022062322/56815147550346895dbf689e/html5/thumbnails/3.jpg)
Background
• Undergraduate research project
• Investigation into CORBA and DSA from a beginner’s point of view
![Page 4: A Comparison of CORBA and Ada’s Distributed Systems Annex](https://reader036.fdocuments.us/reader036/viewer/2022062322/56815147550346895dbf689e/html5/thumbnails/4.jpg)
CORBA Background
• 1991 by the Object Management Group (OMG)
• Object-oriented approach to distributed systems
• Features:– Object-oriented techniques– Language interoperability– Transparent communication layer
![Page 5: A Comparison of CORBA and Ada’s Distributed Systems Annex](https://reader036.fdocuments.us/reader036/viewer/2022062322/56815147550346895dbf689e/html5/thumbnails/5.jpg)
CORBA: The Heart
• Object Request Broker (ORB)
– Handles interactions between objects
– Provides extra services (naming, etc.)
– Vendors create different ORBs
![Page 6: A Comparison of CORBA and Ada’s Distributed Systems Annex](https://reader036.fdocuments.us/reader036/viewer/2022062322/56815147550346895dbf689e/html5/thumbnails/6.jpg)
CORBA: Object Definition
• Interface Definition Language (IDL)– Defines the interface of distributed objects– Definition only, no implementation– Uses a subset of common language features
![Page 7: A Comparison of CORBA and Ada’s Distributed Systems Annex](https://reader036.fdocuments.us/reader036/viewer/2022062322/56815147550346895dbf689e/html5/thumbnails/7.jpg)
Sample IDL Fileinterface 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( );};
![Page 8: A Comparison of CORBA and Ada’s Distributed Systems Annex](https://reader036.fdocuments.us/reader036/viewer/2022062322/56815147550346895dbf689e/html5/thumbnails/8.jpg)
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
![Page 9: A Comparison of CORBA and Ada’s Distributed Systems Annex](https://reader036.fdocuments.us/reader036/viewer/2022062322/56815147550346895dbf689e/html5/thumbnails/9.jpg)
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
![Page 10: A Comparison of CORBA and Ada’s Distributed Systems Annex](https://reader036.fdocuments.us/reader036/viewer/2022062322/56815147550346895dbf689e/html5/thumbnails/10.jpg)
CORBA: All Together
Client Client
IDL Stub IDL Stub
ORB
Portable Object Adapter
IDL Skeleton
Implementation(Servant)
![Page 11: A Comparison of CORBA and Ada’s Distributed Systems Annex](https://reader036.fdocuments.us/reader036/viewer/2022062322/56815147550346895dbf689e/html5/thumbnails/11.jpg)
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
![Page 12: A Comparison of CORBA and Ada’s Distributed Systems Annex](https://reader036.fdocuments.us/reader036/viewer/2022062322/56815147550346895dbf689e/html5/thumbnails/12.jpg)
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
![Page 13: A Comparison of CORBA and Ada’s Distributed Systems Annex](https://reader036.fdocuments.us/reader036/viewer/2022062322/56815147550346895dbf689e/html5/thumbnails/13.jpg)
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
![Page 14: A Comparison of CORBA and Ada’s Distributed Systems Annex](https://reader036.fdocuments.us/reader036/viewer/2022062322/56815147550346895dbf689e/html5/thumbnails/14.jpg)
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
![Page 15: A Comparison of CORBA and Ada’s Distributed Systems Annex](https://reader036.fdocuments.us/reader036/viewer/2022062322/56815147550346895dbf689e/html5/thumbnails/15.jpg)
DSA: Assembling the Pieces
• After program creation, assembly is done with a configuration tool– Decides packages in partitions, and nodes
![Page 16: A Comparison of CORBA and Ada’s Distributed Systems Annex](https://reader036.fdocuments.us/reader036/viewer/2022062322/56815147550346895dbf689e/html5/thumbnails/16.jpg)
Sample DSA Configuration Fileconfiguration 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;
![Page 17: A Comparison of CORBA and Ada’s Distributed Systems Annex](https://reader036.fdocuments.us/reader036/viewer/2022062322/56815147550346895dbf689e/html5/thumbnails/17.jpg)
DSA: All TogetherPhysical Node 1
Partition 1
Shared_Passive
Network
Physical Node 2
Partition 2
Remote_Call_Interface
Partition 3
Remote_Call_Interface
![Page 18: A Comparison of CORBA and Ada’s Distributed Systems Annex](https://reader036.fdocuments.us/reader036/viewer/2022062322/56815147550346895dbf689e/html5/thumbnails/18.jpg)
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
![Page 19: A Comparison of CORBA and Ada’s Distributed Systems Annex](https://reader036.fdocuments.us/reader036/viewer/2022062322/56815147550346895dbf689e/html5/thumbnails/19.jpg)
Findings: Qualitative
• Easy to Learn: DSA– No need to worry about IDL– Easy to understand program paradigm
![Page 20: A Comparison of CORBA and Ada’s Distributed Systems Annex](https://reader036.fdocuments.us/reader036/viewer/2022062322/56815147550346895dbf689e/html5/thumbnails/20.jpg)
Findings: Qualitative
• Program Creation: DSA– Much less “overhead”– Static partitions, however
![Page 21: A Comparison of CORBA and Ada’s Distributed Systems Annex](https://reader036.fdocuments.us/reader036/viewer/2022062322/56815147550346895dbf689e/html5/thumbnails/21.jpg)
Findings: Qualitative
• Language Interoperability: CORBA– Built for language interoperability
![Page 22: A Comparison of CORBA and Ada’s Distributed Systems Annex](https://reader036.fdocuments.us/reader036/viewer/2022062322/56815147550346895dbf689e/html5/thumbnails/22.jpg)
Findings: Qualitative
• Documentation: CORBA– Quite popular in many languages– A large number of vendor implementations
available
![Page 23: A Comparison of CORBA and Ada’s Distributed Systems Annex](https://reader036.fdocuments.us/reader036/viewer/2022062322/56815147550346895dbf689e/html5/thumbnails/23.jpg)
Findings: Qualitative
• Design and Development: DSA– Allows programs to run distributed or non-
distributed transparently– Compiling allowed on any compiler
![Page 24: A Comparison of CORBA and Ada’s Distributed Systems Annex](https://reader036.fdocuments.us/reader036/viewer/2022062322/56815147550346895dbf689e/html5/thumbnails/24.jpg)
Findings: QuantitativeSingle-Node Performance
0
10
20
30
40
50
60
70
80
90
100
1 2 3 4 5 6 7 8 9
Processes
Tim
e CORBADSA
![Page 25: A Comparison of CORBA and Ada’s Distributed Systems Annex](https://reader036.fdocuments.us/reader036/viewer/2022062322/56815147550346895dbf689e/html5/thumbnails/25.jpg)
Findings: QuantitativeMultiple-Node Performance
0
10
20
30
40
50
60
70
80
1 2 3 4 5 6 7 8
Nodes
Tim
e CORBADSA
![Page 26: A Comparison of CORBA and Ada’s Distributed Systems Annex](https://reader036.fdocuments.us/reader036/viewer/2022062322/56815147550346895dbf689e/html5/thumbnails/26.jpg)
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
![Page 27: A Comparison of CORBA and Ada’s Distributed Systems Annex](https://reader036.fdocuments.us/reader036/viewer/2022062322/56815147550346895dbf689e/html5/thumbnails/27.jpg)
Questions