不幸的是,我不能告诉你太多关于 CoreDX 的信息,但我在 Vortex OpenSlice 和 RTI 的 Connext DDS 上工作了一段时间。以下是我的经历:
一些差异
OpenSlice 实现了一种联合模型。您的应用程序在单独的进程中运行,DCPS 通信和配置在另一个(守护程序)进程中处理。这允许明确的分离,但也存在在非常高的数据速率下成为瓶颈甚至单点故障的危险(如果处理 DCPS 的进程崩溃)。 OpenSlice 还支持单进程架构,但这不是默认的,而且优化程度也较低。此外,OpenSlice 支持两种协议:其 RTNetworking 是默认协议,RTPS 标准仅用于与其他供应商的 DDS 实现的互操作性。
RTI Connext DDS的架构是完全独立的,不需要守护进程。这样做的好处是消除了单点故障并减少了延迟。但同一主机上多个DDS应用程序之间的数据批量优化更加困难,这导致可扩展性降低,特别是对于较小的数据量。
CoreDX 是专门针对嵌入式领域的实现,也应用单进程架构。它专注于低内存占用和延迟,甚至可以在没有操作系统的情况下运行,没有重大限制。
高性能
我不知道你的性能要求,但我认为公正的分析数据分发服务 (DDS):OpenSplice 和 RTI 实施的性能比较 https://ieeexplore.ieee.org/document/6754976将为您提供最好的指示。它是通过 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 在大多数情况下都会在数小时内为您提供适当的答案。如果您需要具体和专业的支持,不幸的是,除了购买支持许可证之外别无选择。
相比之下,CoreDX 的文档只有几页最需要的信息以及很少的示例 - 这不是您想要的轻松入门。
低价
Vortex OpenSlice 有一个社区版本,但它仅支持 32/64 位 x86 Linux 和 32/64 位 x86 Windows,这意味着对于 Android 上的 DDS 应用程序,您将需要 Connext、OpenSlice 或 CoreDX 的商业版本。确切的定价始终取决于您的需求。我知道 RTI 的例子是因为我联系过他们。您可以只选择您真正需要的软件包,因此您支付的费用将大大低于规定的 8000 美元左右。您还可以申请研究和评估许可证,而无需花费您一分钱。
Security
如果您对使用 DDS 的安全性和数据加密有广泛的要求,那么 RTI Connext DDS Secure 是唯一的答案。为什么?原因很简单,因为它是目前唯一完全实施 OMG 的 DDS 安全标准的产品。以防万一您需要它:它为您提供了宝贵的功能,用于加密数据和控制诸如读取/写入主题或加入应用程序可能在全局数据空间中采取的域之类的操作。
关于 CoreDX 的最后一件事CoreDX 出现仅几年时间,而 OpenSlice 和 Connext 是成熟而复杂的产品,已在数百个项目中证明了其功能。我宁愿把钱押在经过验证的专业人士身上,也不愿押在(也许)正在崛起的新手身上。
您可能还想看看其他开源 DDS 实现,例如OpenDDS https://opendds.org/,但我个人认为它们不能满足您的需求。