I have recently seen some DDS implementation-specific advertisements claiming that I/F changes can now be done dynamically without recompiling, and while the system is running. I'm not sure I have understood this correctly and have a question below.
Since I'm new to DDS, I'm not up to speed yet on the overall programming model. However, my understanding is outlined below.
Since DDS utilizes IDL for interfaces, it seems that a change in an interface would require a recompile of all software entities that use the interface (and, perhaps, an interruptive restart to activate the change at run time).
Similarly, if an interface change simply extends existing structures by adding new members without disturbing the existing members, it seems that IDL still requires a recompile for all software entities that use the interface. This applies as well to those software entities that use the interface but don't make use of the newly added fields.
If my DDS understanding above is correct, then have I misinterpreted the claims that recent versions of DDS may allow interfaces to be dynamically and non-disruptively changed at run-time?
Or, is there something in the DDS spec that I have missed that supports dynamic, non-disruptive runtime changes to interfaces?
For (type-)safety reasons, when we crafted the DDS specification we decided to go for typed readers/writers for data-types specified in IDL.
In the current v1.2 specification, datatypes and related interfaces are static in the sense that you can not change the types/interfaces at runtime. Yet there are some supported 'dynamic' i.e. stretchy types such as unbounded sequences as stings that could hold all kinds of stuff like for instance XML.
To support more dynamic data-models, there is a new standardization on its way for 'Extensible and dynamic topic types for DDS' that addresses the need for evolutionary data-models (and related interfaces) to support type-versioning, type-evolution, sparse-data etc.
The latest work-in-progress can be found at the OMG-site under mars/2009-02-06