DDS - 推荐哪一个 - OpenSplice或CoreDX?

时间:2016-07-06 08:58:53

标签: c# android data-distribution-service opensplice

我需要C#winform应用程序和Android本机应用程序才能使用DDS(数据分发服务)。每个人都可以是订阅者和作者。 对我来说重要的是:
  - 高性能。
  - 易于使用和记录。
  - 支持。
  - 价格低廉。

最佳推荐产品是什么 - OpenSplice或CoreDX?
它们之间有什么区别?

感谢

3 个答案:

答案 0 :(得分:10)

不幸的是,我无法告诉你很多关于CoreDX的信息,但我使用Vortex OpenSlice和RTI的Connext DDS工作了很长时间。以下是我的经历:

一些差异

OpenSlice实现了一种联合模型。您的应用程序在单独的进程中运行,DCPS通信和配置在另一个(守护程序)进程中处理。这样可以实现清晰的分离,但也存在在非常高的数据速率甚至是单点故障时成为瓶颈的危险(如果处理DCPS的过程崩溃的情况)。 OpenSlice还支持单进程架构,但这不是默认设置,也不太优化。此外,OpenSlice支持两种协议:其RTNetworking是默认协议,RTPS标准仅用于与其他供应商的DDS实现的互操作性。

RTI Connext DDS的体系结构是完全独立的,不需要守护进程。这样做的好处是可以消除单点故障并减少延迟。但是,同一主机上的多个DDS应用程序之间的数据批处理优化更加困难,这导致可伸缩性降低,尤其是对于较小的数据大小。

CoreDX是专门针对嵌入式域的实现,也适用于单进程架构。它专注于低内存占用和延迟,即使没有操作系统也可以在没有重大限制的情况下运行。

高效

我不了解您的性能要求,但我认为Data Distribution Service (DDS): A performance comparison of OpenSplice and RTI implementations中的无偏见分析将为您提供最佳指示。它是使用Connext 5.0.0和OpenSlice V5.5.1社区进行的,因此它仍然可以被认为是相关的。本文分析了每秒采样率,以Mbps为单位的吞吐量,往返时间,内存和CPU使用率。一般结论是,对于0到1kB的数据大小,OpenSlice优于Connext,但对于大于1kB的数据,Connext优于OpenSlice。对不起,我不能告诉你确切的数字,因为这篇论文是收费的,我建议你自己看一下,根据你的大小决定哪些最适合你的需求。数据。不幸的是,我无法告诉你有关CoreDX性能的任何信息,因为我还没有找到任何经过独立验证的指示。

易于使用和记录

在这两种情况下,您都会在所有语言绑定中找到干净且一致的API。有许多可立即执行的示例和代码片段可供免费下载。官方用户手册非常全面,涵盖了您需要的所有内容。我个人发现RTI手册要好得多,因为它充满了你可以在你的应用程序中直接应用的例子。根据我的经验,开始使用手册而不是附带的代码,否则你会发现自己被锁定在你不了解的细节中。 RTI Connext和Vortex OpenSlice的社区都很庞大,但有人可能会发现RTI的社区响应更快,更全面。每当您在论坛中发布问题时,FAE将在大多数情况下在几小时内为您提供适当的答案。如果您需要特定和专业的支持,很遗憾没有办法购买支持许可证。

相比之下,CoreDX的文档只是几页上最需要的信息,只有很少的例子 - 这不是你想要的一个简单的起点。

价格低廉

有一个Vortex OpenSlice的社区版,但它只支持32/64位x86 Linux和32/64位x86 Windows,这意味着对于Android上的DDS应用程序,您需要商业版的Connext,OpenSlice或CoreDX 。确切的定价总是取决于您的需求。我知道RTI的例子,因为我联系了他们。您只能选择您真正需要的软件包,因此您支付的费用将远低于规定的8000美元左右。您还可以申请研究和评估许可证,而这些许可证不会让您损失惨重。

安全

如果您对使用DDS的安全性和数据加密有广泛的要求,那么RTI连接DDS Secure是唯一的答案。为什么?仅仅因为它是目前唯一能够全面实施OMG的DDS安全标准的产品。万一您需要它:它为您提供了有价值的功能,可用于加密数据和控制诸如读取/写入主题或加入域应用程序可能占用全局数据空间的操作。

关于CoreDX的最后一件事 CoreDX已经存在仅仅几年,而OpenSlice和Connext是成熟和复杂的产品,已经在数百个项目中证明了它们的功能。我敢打赌我的钱而不是一个经验丰富的专业人士,而不是一个(也许)正在崛起的新手。

您可能还想查看其他开源DDS实施,例如OpenDDS,但我个人认为它们不符合您的需求。

答案 1 :(得分:2)

我建议您查看RTI Connext DDSOpenDDS,我们和我们的客户正在使用这两个项目,包括我们的AXCIOMA组件框架。

答案 2 :(得分:1)

Twin Oaks的CoreDX DDS支持C#和Android。 Android支持包括Java和C#语言API。一些客户还使用C或C ++ API开发了基于CoreDX DDS的Android应用程序,但这需要更多一些。无论如何,CoreDX DDS在Android平台上本地运行。

[完全披露,我与Twin Oaks Computing联系;所以,我不会评论你问题中更主观的元素。我只会说我相信CoreDX DDS是您提到的所有四个维度的绝佳选择。]