A Comparison of CORBA and Ada’s Distributed Systems Annex
description
Transcript of A Comparison of CORBA and Ada’s Distributed Systems Annex
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 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( );};
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 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;
DSA: All TogetherPhysical Node 1
Partition 1
Shared_Passive
Network
Physical Node 2
Partition 2
Remote_Call_Interface
Partition 3
Remote_Call_Interface
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 non-
distributed transparently– Compiling allowed on any compiler
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
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
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