Model DDS is a networking
middleware that simplifies complex
network programming. It implements a
publish–subscribe pattern for sending and receiving data, events, and commands among the
nodes. Nodes that produce information (publishers) create "topics" (e.g., temperature, location, pressure) 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 de-marshalling (so subscribers can be on different platforms from the publisher), 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 needs 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 (QoS) 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 (that is, whose publisher-specified validity period has not expired). It automatically switches back to the primary when it recovers, too.
Interoperability Both proprietary and
open-source software implementations of DDS are available. These include
application programming interfaces (APIs) and libraries of implementations in
Ada,
C,
C++,
C#,
Java,
Python,
Scala,
Lua,
Pharo,
Ruby, and
Rust. DDS vendors participated in interoperability demonstrations at the OMG Spring technical meetings from 2009 to 2013. During demos, each vendor published and subscribed 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: the DDS-I or Real-Time Publish-Subscribe (RTPS) protocol, and the agreement to use a common model. In March 2009, three vendors demonstrated interoperability between the individual, independent products that implemented the OMG Real-time Publish-Subscribe protocol version 2.1 from January 2009. The demonstration included the discovery of each other's publishers and subscribers on different OS Platforms (
Microsoft Windows and
Linux) and supported
multicast and
unicast network communications. The DDS interoperability demonstration used scenarios such as: • Basic connectivity to network using
Internet Protocol (IP) • Discovery of publishers and subscribers • Quality of service (QoS) Compatibility between requester and offerer • Delay-tolerant networking • Multiple topics and instances of topics • Exclusive ownerships of topics • Content filtering of topic data including time and geographic == History ==