In my experience, one of the common areas of confusion around DDS, regards its relationship with respect to CORBA.
As the DDS standard as emerged from the Object Management Group (OMG), which was the International Standardization Organization pionieering the standardization of CORBA - the most successful distributed object computing platform, many people still identify the OMG as CORBA's father. However, since the early days of CORBA standardization, the OMG, has moved forward with a track record of technology standards such as UML, XMI, etc.
The "Data Distribution Service", DDS for short, is one of the latest standard ratified by the OMG --that is perhaps the most common similarity it shares with CORBA -- the OMG ;-)
From a technical perspective, it does not make sense to even compare CORBA and DDS, as these technologies serve different purpose and rely on a different computational model. More specifically, CORBA is a Distributed Object Computing (DOC) platform, while the DDS is a data-centric real-time publish/subscribe platform.
Said in another way, CORBA is about objects, interfaces, and the ability to remotely invoke methods on objects. On the other hand, the DDS is about, a data-model, QoS associated with the data model, and the ability to publish and subscribe (with specific QoS) to portions of this data model. To this end, the DDS provides a very rich set of QoS that allow to control every aspect relating to data, such as temporal properties, availability, etc.
As a final remark, it is worth pointing out that CORBA and DDS, are not even competing with each other, but are really complementary technologies. Indeed, in most complex systems DDS is used along with a DOC platform such as CORBA, or Java RMI, and alike.
It sounds hard to me to state something like a '2 to 1 performance advantage'. What is meant with 'performance'? Is this the average latency? Which scenario(s) are used? What about aspects like scalability, predictability, efficiency, fault-tolerance?
Ok, but also when only considering latencies and throughput, what are the scenarios? How to compare performance of CORBA to DDS? CORBA is typically synchronous, connection oriented 1-to-1 method invocation whereas DDS is typically asynchronous, connectionless many-to-many data distribution.
What is your view on this?
posted on Friday, December 11, 2009 - 07:22 pm
Can somebody tell me why DDS uses CORBA data types?
I think any distributed communication system can be compared with any other in terms of latency and throughput because all of them transfer information between entities. It doesn't matter if they're connection-oriented or connectionless; synchronous or asynchronous. You just have to define what is meant by "information" that is applicable to each system.
That's funny that you say that CORBA and DDS are radically different - I agree. However, some hard core CORBA people try to say otherwise. In describing their systems to skeptics (like me), they try to look "modern" by using the terms "publisher/publish" and "subscriber/subscribe" (instead of CORBA terminology like Producer/Consumer, push/pull) and equate the trading/naming services with the DDS "auto-discovery" feature. All it does is confuse less tech-savvy executives who finance development projects. Bummer.
posted on Friday, May 27, 2011 - 09:55 pm
The closest thing to DDS in CORBA is indeed the Notification Service. The Notification Service has a couple of scalability issues (single point of failure, type-code overhead of CORBA::Any, limited QoS). For pub/sub, DDS is a much more powerful/flexible tool. But only for that part of your distributed system.
RTI just published performance numbers on their DDS implementation. Any papers from the TAO Notification service are seriously dated. So it's hard to do a apples to apples comparison. Generally, the point-to-point communication of DDS should by design outperform the event-channel-based relay of messages in the Notification Service by a factor of 2.