我需要为C# winform应用程序和Android原生应用程序使用DDS(Data Distribution Service)。每一个都可以是订阅者和写入者。
对我来说重要的是:
- 高性能。
- 易于使用和文档化。
- 支持。
- 低价格。
什么是最好推荐使用的产品——OpenSplice还是CoreDX?
它们之间有什么区别?
谢谢
我需要为C# winform应用程序和Android原生应用程序使用DDS(Data Distribution Service)。每一个都可以是订阅者和写入者。
对我来说重要的是:
- 高性能。
- 易于使用和文档化。
- 支持。
- 低价格。
什么是最好推荐使用的产品——OpenSplice还是CoreDX?
它们之间有什么区别?
谢谢
很抱歉,关于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 Community进行,并且仍然可以被视为相关。该论文分析了每秒样本率、吞吐量(以Mbps为单位)、往返时间、内存和CPU使用情况。总体结论是对于数据大小在0到1kB之间的情况,OpenSlice的表现优于Connext,但对于数据大小大于1kB的情况,Connext的表现优于OpenSlice。很抱歉我不能告诉您确切的数字,因为这篇论文是收费的,因此我建议您自行查看并根据数据大小决定哪种更适合您的需求。不幸的是,我没有找到任何经过独立验证的有关CoreDX性能的指标,因此无法告诉您任何信息。
易用性和文档
在两种情况下,您都会发现所有语言绑定的API都是干净和一致的。有许多可直接下载的示例和代码片段。官方用户手册是全面的,涵盖了您需要开始的所有内容。我个人发现RTI手册更好,因为它充满了可以直接应用于应用程序中的示例。从我的经验来看,确实要从手册开始学习,而不是从附带的代码开始,否则您会发现自己锁定在您一无所知的细节上。
RTI Connext和Vortex OpenSlice的社区都很大,但有人可能会发现RTI的社区反应更快,提供的支持更全面。每当您在论坛中发布问题时,FAE(Field Application Engineer)通常会在几小时内提供适当的答案。如果您需要特定和专业的支持,那么唯一的办法就是购买支持许可证。
相比之下,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 Secure 标准的产品。以防您需要:它为您提供有价值的功能,用于加密数据并控制操作,例如读取/写入主题或加入应用程序可能在全局数据空间中采取的域。
关于 CoreDX 的最后一条说明
CoreDX 已经存在了几年时间,而 OpenSlice 和 Connext 是成熟而复杂的产品,在许多项目中已经证明了其能力。我宁愿把钱押在经过证明的专业产品上,而不是押在(可能)新晋的产品上。
您也可以查看其他开源 DDS 实现,例如 OpenDDS,但我个人认为它们不适合您的需求。