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

Shi*_*hir 3 c# android data-distribution-service opensplice

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

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

谢谢

Pet*_*ete 10

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

一些差异

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

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

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

高性能

我不知道你的性能要求,但我认为在公正的分析 数据分发服务(DDS):OpenSplice之间的性能对比和RTI实现将为您提供最好的指示.它是使用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 Connext DDS Secure是唯一的解决方案.为什么?仅仅因为它是目前唯一完全实现OMG的DDS安全标准的产品.万一您需要它:它为您提供了有价值的功能,可用于加密数据和控制诸如读取/写入主题或加入域应用程序可能占用全局数据空间的操作.

论CoreDX最后一件事 CoreDX已经出现,因为只有几年,而OpenSlice和Connext是已在数以百计的项目,证明了自己的能力,成熟和老练的产品.我打赌我的钱而不是一个经过证明的专业人士,而不是一个(可能)上升的新手.

您可能还想看看OpenDDS等其他开源DDS实现,但我个人认为它们不符合您的需求.