我需要C#winform应用程序和android本机应用程序使用DDS(数据分发服务)。每一个都可以是订阅者和写入者。对我来说重要的是:
-高性能
-易于使用和文档
-支持
-价格低廉。
最推荐使用的产品是什么?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社区中进行的,因此它仍然可以被视为相关的。本文分析了每秒采样率、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位x86Windows,这意味着对于android上的DDS应用程序,您需要Connext、OpenSlice或CoreDX的商业版本。确切的价格总是取决于您的需求。我知道RTI的例子,因为我联系了他们。你只能选择你真正需要的软件包,因此你将支付远低于规定的8000美元左右的费用。你还可以申请研究和评估许可证,这不会花你一分钱。
安全
如果您对使用DDS的安全性和数据加密有广泛的要求,RTI Connext DDS Secure是唯一的答案。为什么?因为它是目前唯一一款完全实现OMG DDS安全标准的产品。以防万一:它为您提供了宝贵的功能,用于加密数据和控制全局数据空间中应用程序可能采取的读取/写入主题或加入域等操作。
关于CoreDX的最后一件事CoreDX问世才几年,而OpenSlice和Connext是成熟而复杂的产品,已经在数百个项目中证明了它们的能力。我宁愿把钱押在一个久经考验的专业人士身上,也不愿押在(可能)正在崛起的新人身上。
您可能还想看看其他开源DDS实现,如OpenDDS,但我个人认为它们不适合您的需求。
我建议查看RTI Connext DDS或OpenDDS,我们和我们的客户正在将两者用于各种项目,包括我们的AXCIOMA组件框架。
[完全披露,我与Twin Oaks Computing有联系;因此,我不会评论你问题中更主观的元素。我只想说,我相信CoreDX DDS在你提到的所有四个维度上都是一个很好的选择。]