A Comparison of CORBA and Ada's Distributed Systems

advertisement
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
Download