PolyORB – Distributed Systems

Middleware implementation providing development tools and an innovative runtime library architecture for collaboration of application components using open standards for distributed systems.

Key features

  • Support of standard application personalities: CORBA, Ada DSA (Annex E)
  • Support of standard protocol personalities: GIOP, SOAP
  • Interoperability between hardware platforms and operating environments, between distribution models
  • Support for multiple tasking profiles (full Ada tasking, Ravenscar tasking, no tasking)
  • Support for security and real-time extensions
  • Tailorability to application and platform specific requirements

PolyORB is a middleware toolset that provides distribution services through standard programming interfaces (e.g. CORBA, the Ada Distributed Systems Annex, or the MOMA messaging API) and communication protocols (e.g. GIOP and SOAP). It addresses distribution model interoperability issues by allowing a single middleware instance to efficiently support multiple personalities executing simultaneously. Its modular architecture emphasising code reuse allows the definition and deployment of middleware configurations that are specially adapted for real-time, high integrity applications.

Versatile middleware architecture

The PolyORB architecture brings increased versatility to middleware technology. Existing middleware solutions for distributed applications define two interface aspects:

  • The interface seen by the developer’s application objects (“application personality”)
  • The protocol used by the middleware environment to talk to other nodes in the distributed application (“protocol personality”)

Middleware implementing a given distribution model usually supports only one set of such interfaces, and isn’t interoperable with other platforms or distribution models. PolyORB addresses this “middleware paradox” with dual, complementary approaches.

  • The use of a generic component-based design allows multiple implementations of each middleware aspect to coexist and share internal state and behaviour with a common framework.
  • The internal representation of interactions between distributed application components is independant of both the application and protocol personalities, allowing full decoupling of the two layers, and making it possible to mix and match personalities arbitrarily.

The decoupling of application and protocol personalities, and the support for multiple personalities simultaneously executing within the same running middleware are key features required for the construction of interoperable distributed applications. This allows PolyORB to communicate with middleware products that implement different distribution standards: PolyORB provides middleware-to-middleware interoperability.

PolyORB’s modularity lets users extend or modify its core components and personalities to meet specific requirements. Thus you can create standards-compliant or specific personalities ranging from early stage prototyping to full-featured implementation. The PolyORB architecture also supports automatic “just-in-time” creation proxies between incompatible environments by combination of multiple protocol personalities.

Supported application personalities


PolyORB includes an implementation of the standard Ada Language Mapping of CORBA:

  • IAC: OMG IDL compiler generating Ada server and client stubs
  • an ORB implemented as personality modules within the PolyORB framework, providing runtime communication services and distribution support to application components.

Various standard CORBA services such as Naming, Events, Notifications, Time and the Interface Repository are provided, as well as support for standard security and real-time extensions of CORBA.

Ada Distributed Systems Annex (DSA)

The Ada Distributed Systems Annex allows easy creation and deployment of distributed applications using standard language features. The construction of a distributed appplication is facilitated by leveraging on existing Ada constructs to identify distributed component boundaries and interfaces. Applications can be written as though not distributed, and later on partitioned into multiple subsets assigned to distinct nodes, and communicating through remote subprogram calls and shared data.

The PolyORB/DSA implementation includes:

  • a distribution stubs generator, included in the GNAT Pro compiler
  • GNATDIST: a partitioning tool allowing the generation of executable images for each partition in a DSA distributed appplication
  • a PCS (Partition Communication Subsystem) implemented as personality modules within the PolyORB framework, providing runtime communication services and distribution support to application components.

Supported protocol personalities

The following protocol personalities are supported, and can all be used in conjunction with all application personalities:

  • SOAP
  • GIOP (CORBA protocol layer) and the following instantiations:
    • IIOP (over TCP),
    • SSLIOP (over secure, encrypted SSL TCP links)
    • DIOP (over UDP for one-way requests)
    • MIOP/UIPMC (group communication over multicast UDP)