I need for C# winform app and for android native application to use DDS(Data Distribution Service). Each one can be subscriber and writer.
What is important for me:
- High performance.
- Easy to use and documentation.
- Support.
- Low price.
What is best recommended product to use - OpenSplice or CoreDX?
What the differences between them?
Thank
Unfortunately I can't tell you much about CoreDX, but I worked for quite a while with Vortex OpenSlice and RTI's Connext DDS. Here are my experiences:
Some Differences
OpenSlice implements a kind of federated model. Your application runs in a separate process, the DCPS communication and configuration is handled in another (daemon) process. This allows a clear separation, but also involves the danger of becoming a bottleneck at very high data rates or even a single-point-of-failure(if case the process handling DCPS crashes). OpenSlice also supports a single-process architecture, but that's not the default and it's also less optimized. Furthermore, OpenSlice supports two protocols: its RTNetworking is the default and the RTPS standard is only used for interoperability with DDS implementations of other vendors.
The architecture of RTI Connext DDS is completely self-contained and does not need a daemon process. This has the benefit that the single point of failure is eliminated and latency is reduced. But data batching optimization between multiple DDS applications on the same host is more difficult, which results in reduction of scalability, especially for smaller data sizes.
CoreDX is a implementation specifically intended for the embedded domain and applies also the single-process architecture. It focused on a low memory footprint and latency and can run even without a operating system without major restrictions.
High Performance
I don't know your performance requirements, but I think the unbiased analysis in Data Distribution Service (DDS): A performance comparison of OpenSplice and RTI implementations will provide you the best indication. It was conducted with Connext 5.0.0 and OpenSlice V5.5.1 Community, so it can still be regarded as relevant. This paper analysed the rate of samples per second, throughput in Mbps, round-trip-time, memory and CPU usage. The general conclusion is that for data sizes ranging from 0 to 1kB, OpenSlice outperforms Connext, but for data sizes greater than 1kB Connext outperforms OpenSlice. I'm sorry I can't tell you the exact numbers since this paper is fee-based, I suggest therefore you take a look at it on your own and decide which suits your needs best based on the size of your data. Unfortunately I can't tell you anything about CoreDX's performance since I haven't found any independently verified indications.
Easy to use and documentation
In both cases you will find a clean and consistent API throughout all language bindings. There are many ready-to-execute examples and code snippets free for download. The official user manuals are comprehensive and cover everything you need to start. I personally found the RTI manual much better because it is full of examples you can directly apply in your application. From my experience, start really with the manuals and not with the accompanying code, otherwise you will find yourself locked down in details you don't have a clue about. The communities of both RTI Connext and Vortex OpenSlice are large, but one may find RTI's community responding faster and being more comprehensive. Whenever you post a questions in the forums, FAEs will provide you in most cases an appropriate answer within hours. If you need specific and professional support, there is unfortunately no way but to purchase support licences.
By contrast, the documentation of CoreDX is only the most need information on a few pages along with only very few examples - that's not what you want for an easy starting.
Low price
There is a community edition of Vortex OpenSlice, but it only supports 32/64 bit x86 Linux and 32/64 bit x86 Windows, which means for DDS applications on android you will need a commercial version of either Connext, OpenSlice or CoreDX. The exact pricing always depends on your needs. I know the example of RTI because I contacted them. You can select only the software packages you really need and therefore you'll pay significantly less than the stated 8000$ or so. You also have the possibility to apply for research and evaluation licences which don't cost you a single buck.
Security
RTI Connext DDS Secure is the only answer if you have extensive requirements on security and data encryption using DDS. Why? Simply because it is currently the only producty fully implementing OMG's DDS Secure standard. Just in case you need it: it provides you valuable functionalities for encrypting your data and controlling the actions like reading/writing to topics or joining domains applications may take in the global data space.
On last thing about CoreDX CoreDX has been around since only a few years, while OpenSlice and Connext are mature and sophisticated products which have proven their capabilities in many hundreds of projects. I would bet my money rather on a proven professional than on a (maybe) rising newbie.
You may also want to take a look at other open-source DDS implementations like OpenDDS, but I personally don't think they will fit your needs.
I would recommend to look at RTI Connext DDS or OpenDDS, we and our customers are using both for various projects including our AXCIOMA component framework.
CoreDX DDS from Twin Oaks provides support for both C# and Android. Android support includes the Java and C# language APIs. Some customers have also developed CoreDX DDS based Android apps using a C or C++ API, but that is a bit more involved. In any case, CoreDX DDS runs natively on the Android platform.
[Full disclosure, I am connected with Twin Oaks Computing; and so, I will refrain from commenting on the more subjective elements of your question. I will only say that I believe CoreDX DDS is an excellent choice on all four dimensions you mention.]
来源:https://stackoverflow.com/questions/38220008/dds-which-one-is-recommended-opensplice-or-coredx