DDS - 推荐哪一个 - OpenSplice 或 CoreDX? [关闭]
Posted
技术标签:
【中文标题】DDS - 推荐哪一个 - OpenSplice 或 CoreDX? [关闭]【英文标题】:DDS - Which one is recommended - OpenSplice or CoreDX? [closed] 【发布时间】:2016-07-06 08:58:52 【问题描述】:我需要 C# winform 应用程序和 android 本机应用程序使用 DDS(数据分发服务)。每个人都可以是订阅者和作者。 对我来说最重要的是: - 高性能。 - 易于使用和记录。 - 支持。 - 价格低廉。
最值得推荐的产品是 OpenSplice 还是 CoreDX? 它们之间有什么区别?
谢谢
【问题讨论】:
【参考方案1】:很遗憾,我不能告诉您太多有关 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。有许多可立即执行的示例和代码 sn-ps 免费下载。官方用户手册内容全面,涵盖了您开始所需的一切。我个人发现 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 是成熟而复杂的产品,已经在数百个项目中证明了它们的能力。我宁愿把钱赌在一个久经考验的专业人士身上,而不是一个(也许)正在崛起的新手身上。
您可能还想看看其他开源 DDS 实现,例如 OpenDDS,但我个人认为它们不适合您的需求。
【讨论】:
在 twinoakscomputing.com 网站上可用于 CoreDX DDS 的文档包括程序员指南、参考手册和快速入门指南。 [它明显超过几页]。在线提供了几个示例,免费提供的评估包中包含更多示例。 CoreDX DDS 还提供免费的 IR&D 许可。 CoreDX DDS 还支持完整的 DDS 安全标准,全面覆盖识别、身份验证、完整性和机密性。 CoreDX DDS 自 2008 年开始商业化。 我在写这篇文章之前浏览了文档。我想说的是,OpenSlice 和 Connext 的文档比 CoreDX 的文档要详细得多。你说有几个例子,我很抱歉,但我不能同意。有 3 个online 和评估包附带的极少数。这个list 可以称为几个例子。也许我错过了它,但我在 CoreDX 事实或其网站上的任何地方都没有看到支持 DDS Secure 的声明。 感谢您的详细解答。【参考方案2】:我建议查看RTI Connext DDS 或OpenDDS,我们和我们的客户正在将这两者用于各种项目,包括我们的AXCIOMA 组件框架。
【讨论】:
我不喜欢使用 RTI,因为它非常昂贵。我在寻找更便宜的产品。 RTI 定价取决于您的需求以及您的项目所需的保修类型。有多种选择,包括开放社区资源、学术和 IR&D 类型的协议。我真的可以建议您联系 RTI 并与他们讨论您的确切需求。【参考方案3】:Twin Oaks 的 CoreDX DDS 支持 C# 和 Android。 Android 支持包括 Java 和 C# 语言 API。一些客户还使用 C 或 C++ API 开发了基于 CoreDX DDS 的 Android 应用程序,但这涉及更多。无论如何,CoreDX DDS 在 Android 平台上原生运行。
[全面披露,我与 Twin Oaks Computing 有联系;因此,我将避免评论您问题中更主观的因素。我只会说,我相信 CoreDX DDS 在你提到的所有四个维度上都是一个很好的选择。]
【讨论】:
谢谢。首先,我在网上没有看到太多关于它的论坛和讨论。似乎使用它开发的人比使用 OpenSplice 的人少。你知道CoreDX的论坛吗?第二 - OpenSplice - 优缺点如何?以上是关于DDS - 推荐哪一个 - OpenSplice 或 CoreDX? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
OpenSplice DDS 开源实现支持——数据库事务处理?
构建 dds-tutorial-cpp-ex 时未找到 OpenSpliceConfig.cmake 或 opensplice-config.cmake