280 likes | 444 Views
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.
E N D
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 Remote_Call_Interface Partition 2 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 non-distributed transparently • Compiling allowed on any compiler
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