The Data Distribution Service for Real-Time Systems is an Object Management Group machine-to-machine
middleware "m2m" standard that aims to enable scalable, real-time, dependable, high-performance
and interoperable data exchanges between publishers and subscribers.
DDS addresses the needs of applications like financial trading, air-traffic control, smart
grid management, and other Big data applications.
The standard is used in applications such as smartphone operating systems, transportation
systems and vehicles, software-defined radio, and by healthcare providers.
DDS may also be used in certain implementations of the Internet of Things.
History A few proprietary DDS systems had been available
for several years.
Starting in 2001, two vendors, the American group, Real-Time Innovations, and the French
Thales Group teamed up to create the DDS specification, which was subsequently approved by the Object
Management Group resulting in Version 1.0 in 2003.
Version History DDS 1.2
DDS 1.1 DDS 1.0
The DDS specification describes two levels of interfaces:
A lower DCPS level that is targeted towards the efficient delivery of the proper information
to the proper recipients.
An optional higher DLRL level, which allows for a simple integration of DDS into the application
layer.
Architecture Entities
DomainParticipantFactory: A singleton factory; the main entry point to DDS.
DomainParticipant: Entry point for the communication in a specific domain; it represents the participation
of an application in one DDS Domain.
Furthermore, it acts as a factory of DDS Publishers, Subscribers, Topics, MultiTopics and ContentFilteredTopics.
TopicDescription: Abstract base class for Topic, ContentFilteredTopic and MultiTopic.
Topic: A specialized TopicDescription; the most basic description of the data to be published
and subscribed.
ContentFilteredTopic: A specialized TopicDescription that additionally allows content-filtered
subscriptions.
MultiTopic: A specialized TopicDescription that additionally allows subscriptions to
combinerearrange data from several topics.
Publisher: A Publisher is an object responsible for the actual dissemination of publications.
DataWriter: Sets the data values to be published under a given Topic.
Subscriber: A Subscriber is an object responsible for the actual reception of data disseminated
by publishers.
DataReader: A DataReader allows the application to declare the data it wishes to receive and
to access the data received by the attached Subscriber.
Model DDS is networking middleware that simplifies
complex network programming.
It implements a publish/subscribe model for sending and receiving data, events, and commands
among the nodes.
Nodes that produce information create "topics" and publish "samples."
DDS delivers the samples to subscribers that declare an interest in that topic.
DDS handles transfer chores: message addressing, data marshalling and demarshalling, delivery,
flow control, retries, etc.
Any node can be a publisher, subscriber, or both simultaneously.
The DDS publish-subscribe model virtually eliminates complex network programming for
distributed applications.
DDS supports mechanisms that go beyond the basic publish-subscribe model.
The key benefit is that applications that use DDS for their communications are decoupled.
Little design time need be spent on handling their mutual interactions.
In particular, the applications never need information about the other participating
applications, including their existence or locations.
DDS transparently handles message delivery without requiring intervention from the user
applications, including: determining who should receive the messages
where recipients are located what happens if messages cannot be delivered
DDS allows the user to specify Quality of Service parameters to configure discovery
and behavior mechanisms up-front.
By exchanging messages anonymously, DDS simplifies distributed applications and encourages modular,
well-structured programs.
DDS also automatically handles hot-swapping redundant publishers if the primary fails.
Subscribers always get the sample with the highest priority whose data is still valid.
It automatically switches back to the primary when it recovers, too.
Availability Both commercial and open-source implementations
of DDS are available.
These include APIs in Ada, C, C++, C#, Java, Scala, Lua, and Ruby.
Interoperability DDS vendors participated in Interoperability
demonstrations at the Object Management Group Spring Technical Meeting.
During the demo, each vendor publishes and subscribes to each other's topics using a
test suite called the Shapes Demo.
For example, one vendor publishes information about a shape and the other vendors can subscribe
to the topic and display the results on their own Shapes Display.
Each vendor takes turns publishing the information and the other subscribe.
Two things made the demos possible: Data Distribution Service Interoperability
Spec sometimes referred to as DDS-I or the Real-Time Publish-Subscribe Protocol
The agreement to use a common model Specifications
Data Distribution Service for Real-time Systems is the main Object Management Group specification
The Real-time Publish-Subscribe Wire Protocol DDS Interoperability Wire Protocol Specification
defines an interoperability protocol sometimes referred to as the wire protocol.
It ensures that information published on a topic using one vendor's DDS implementation
is consumable by one or more subscribers using the same or different vendor's DDS implementations.
Although the specification is targeted at the DDS community, its use is not limited.
DDS for Lightweight CCM - This specification offers an architectural pattern that separates
the business logic from the non-functional properties.
A recent extension adds support for streams.
DDS-Java: Java 5 Language PSM for DDS - This specification defines Java 5 language binding,
referred to as a Platform Specific Model for DDS.
It specifies only the Data-Centric Publish-Subscribe portion of the DDS specification; Additionally,
it encompasses the DDS APIs introduced by DDS-XTypes and DDS-CCM.
DDS-PSM-Cxx: ISO/IEC C++ 2003 Language DDS PSM - This specification defines the ISO/IEC
C++ PSM language binding, referred to as a Platform Specific Model for DDS DDS.
It provides a new C++ API for programming DDS that is more natural to a C++ programmer.
This specification does not impact the DDSI.
. The specification provides mappings for: The Application Programming Interface specified
in DDS-XTypes Accessing Quality of Service profiles specified
in DDS-CCM
Extensible and Dynamic Topic Types for DDS provides support for data-centric publish-subscribe
communication where topics are defined with specific data structures.
To be extensible, DDS topics use data types defined before compile time and used throughout
the DDS global data space.
This model is desirable when static type checking is useful.
UML Profile for Data Distribution provides a Unified Modeling Language profile.
It allows for DDS Domains and Topics to be part of the analysis and design modeling efforts
of object-oriented systems.
This specification also defines how to publish and subscribe objects without first describing
the types in another language, such as XML or OMG IDL.
Note: Until March 2012, the Interface Definition Language specification was part of the Common
Object Request Broker Architecture specification Chapter 3.
Although this specification is still part of CORBA, a new standalone version of IDL
was released to allow IDL to evolve independently from CORBA.
See Interface Definition Language 3.5.
See also Middleware
Open architecture computing environment Object Management Group, standards body that
developed the specification References
External links OMG DDS Hot Topics Resource Page
PocoCapsule for DDS A framework for component-based CORBA and DDS applications.
Catalog of DDS Specifications