DDS - 推荐哪一种 - OpenSplice 还是 CoreDX? [关闭]

2024-01-25

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

最好推荐使用什么产品 - OpenSplice 还是 CoreDX?
它们之间有什么区别呢?

Thank


不幸的是,我不能告诉你太多关于 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/,但我个人认为它们不能满足您的需求。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

DDS - 推荐哪一种 - OpenSplice 还是 CoreDX? [关闭] 的相关文章

  • 需要帮助优化算法 - 两百万以下所有素数的总和

    我正在尝试做一个欧拉计划 http projecteuler net问题 我正在寻找 2 000 000 以下所有素数的总和 这就是我所拥有的 int main int argc char argv unsigned long int su
  • WPF 数据绑定到复合类模式?

    我是第一次尝试 WPF 并且正在努力解决如何将控件绑定到使用其他对象的组合构建的类 例如 如果我有一个由两个单独的类组成的类 Comp 为了清楚起见 请注意省略的各种元素 class One int first int second cla
  • 重载 (c)begin/(c)end

    我试图超载 c begin c end类的函数 以便能够调用 C 11 基于范围的 for 循环 它在大多数情况下都有效 但我无法理解和解决其中一个问题 for auto const point fProjectData gt getPoi
  • PhoneStateListener 不调用

    这是我的完整代码 广播示例 java package com example broadcast gt import android app Activity import gt android content Context import
  • C# 列表通用扩展方法与非通用扩展方法

    这是一个简单的问题 我希望 集合类中有通用和非通用方法 例如List
  • 使用 C# 中的 CsvHelper 将不同文化的 csv 解析为十进制

    C 中 CsvHelper 解析小数的问题 我创建了一个从 byte 而不是文件获取 csv 文件的类 并且它工作正常 public static List
  • C# xml序列化必填字段

    我需要将一些字段标记为需要写入 XML 文件 但没有成功 我有一个包含约 30 个属性的配置类 这就是为什么我不能像这样封装所有属性 public string SomeProp get return someProp set if som
  • 实例化类时重写虚拟方法

    我有一个带有一些虚函数的类 让我们假设这是其中之一 public class AClassWhatever protected virtual string DoAThingToAString string inputString retu
  • 如何在当前 Visual Studio 主机内的 Visual Studio 扩展中调试使用 Roslyn 编译的代码?

    我有一个 Visual Studio 扩展 它使用 Roslyn 获取当前打开的解决方案中的项目 编译它并从中运行方法 程序员可以修改该项目 我已从当前 VisualStudioWorkspace 成功编译了 Visual Studio 扩
  • C# 动态/expando 对象的深度/嵌套/递归合并

    我需要在 C 中 合并 2 个动态对象 我在 stackexchange 上找到的所有内容仅涵盖非递归合并 但我正在寻找能够进行递归或深度合并的东西 非常类似于jQuery 的 extend obj1 obj2 http api jquer
  • 模块中的类无法加载

    我正在开发一个 2D Unity android 游戏 其中我最近添加了 Firebase Beta SDK 但添加后FirebaseAnalytics unitypackage我面临的错误是 无法加载模块中的类 当我删除文件夹时Fireb
  • Android studio - 如何查找哪个库正在使用危险权限?

    我正在尝试将 apk 上传到 google play 商店 但令我惊讶的是 我正在使用以下权限 Your APK is using permissions that require a privacy policy android perm
  • Android:AsyncTask ProgressDialog 将不会在 ActivityGroup 中打开

    我试图在轮询我的服务器时打开一个进度对话框 该类是一个 ActivityGroup 因为它嵌套在选项卡栏中 为了将视图保持在框架内 需要 ActivityGroup 这是我的 ActivityGroup 类的声明 public class
  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win
  • 使用特定参数从 SQL 数据库填充组合框

    我在使用参数从 sql server 获取特定值时遇到问题 任何人都可以解释一下为什么它在 winfom 上工作但在 wpf 上不起作用以及我如何修复它 我的代码 private void UpdateItems COMBOBOX1 Ite
  • C++ 中的 include 和 using 命名空间

    用于使用cout 我需要指定两者 include
  • 使用 JobScheduler API 进行位置更新

    下面是我使用 FireBaseJobDispatcher 启动作业的演示代码 public class MainActivity extends AppCompatActivity Override protected void onCre
  • 在OpenGL中,我可以在坐标(5, 5)处精确地绘制一个像素吗?

    我所说的 5 5 正是指第五行第五列 我发现使用屏幕坐标来绘制东西非常困难 OpenGL 中的所有坐标都是相对的 通常范围从 1 0 到 1 0 为什么阻止程序员使用屏幕坐标 窗口坐标如此严重 最简单的方法可能是通过以下方式设置投影以匹配渲
  • Android 中带有组的列表视图

    我有一个列表视图 每行都有一些日期和文本 我可以像 iPhone 中那样将这个 listView 分组 组之间有标题吗 在 android 中是否可能 请帮忙 即 我需要在 Listview 行之间有标题栏 以便如果我使用日期对其进行分组
  • 指针和内存范围

    我已经用 C 语言编程有一段时间了 但对 C 语言还是很陌生 有时我对 C 处理内存的方式感到困惑 考虑以下有效的 C 代码片段 const char string void where is this pointer variable l

随机推荐

  • 无法在非聚合查询中的未定义结果变量上添加条件

    我正在实体存储库中执行此查询并不断获取 无法在未定义的结果变量上添加条件 但查询根本没有聚合 为什么这种事会发生在我身上 public function getPersonalizableItemsByOwner User owner qb
  • Xcode/iOS——摆脱特定常量的弃用警告?

    我的项目中有一些已弃用的常量 他们需要留下来 我不想收到关于它们的警告 但是如果稍后在我的项目中出现其他已弃用的常量 我确实希望收到警告 Apple 的标头将它们声明如下 extern NSString const NameOfString
  • 按钮文本位置与浏览器不同

    无论是在 firefox chrome 还是 opera ie 中 按钮文本位置都不同 我有一个按钮和文字 在 Opera 中 它比在 Firefox 中低一点 HTML
  • 如何使用户控件部分类了解基类中声明的控件?

    我们是否必须做一些特殊的事情才能让 ASP NET 分部类了解在用户控件的基类中声明的控件 分部类不断为基类中的控件生成声明 这意味着基类中的控件被隐藏并且为空 CodeFileBaseClass 属性可应用于 Page http msdn
  • PostgreSQL 检查数组是否包含左侧数组中的任何元素

    我知道在 PostgreSQL 中你可以运行如下查询 SELECT 1 ANY 1 3 4 7 int AS result检查右侧数组是否包含该元素1 我想知道是否有一种简单的方法来检查右侧数组是否包含来自左手大批 就像是 SELECT 2
  • 使用主干js加载模板

    我开始进行 javascript 开发 并使用 node js 作为休息 API 和使用主干的客户端做了一个简单的项目 一切看起来都很完美 直到我想从我的 js 中获取模板 我发现了不同的方法 其中一些需要一段时间 例如一年 但我不明白哪种
  • 使用 Ember Data 处理服务器端验证

    我在使用 Ember 和 Ember Data 处理服务器端验证时遇到问题 当发生验证错误时 API 返回代码 422 然后 Ember 数据会触发becameInvalid模型上的回调 从这里开始 我不确定处理我遇到的错误的最佳方法是什么
  • $(e.currentTarget) 和 $(this) 之间有区别吗?

    下面两种方法有什么区别吗 1 比 2 快吗 1 selector on click function this do stuff with clicked element and 2 selector on click function e
  • 将参数传递给 IIFE

    将参数传递给存储在变量中的 IIFE 的正确语法是什么 下面的例子告诉我foo未定义 无论我是否调用该函数 var bar function foo return getFoo function return foo foo console
  • 错误 440“数组索引越界”

    我正在尝试下载带有主题关键字的 Excel 附件 我设法创建了一个代码 但有时它给出了错误440 Array Index out of Bounds 代码就卡在这部分了 If Items i Class Outlook OlObjectCl
  • d3.js v4.0 中 d3.scale.category10() 的等效项是什么?

    我正在尝试通过交互式 Web 可视化一书来学习 d3 但 4 0 版本发生了很多变化 我真的无法弄清楚的一件事是是否有 d3 scale category10 的等效项来轻松映射到颜色 新版本中是否有类似的东西 或者我们需要使用 math
  • 向函数传递两个指向同一联合成员​​的指针是否违反了严格的别名规则? [复制]

    这个问题在这里已经有答案了 注意 学习严格的别名规则 请耐心等待 代码示例 t935 c include
  • 使 Loopback API Ember.js 兼容

    我正在尝试使用 Loopback 来获取与 Ember 对话的 API Ember 要求 JSON 包含在 键 中 例如对于一个帐户 account domain domain com subdomain test title test d
  • Alpine 操作系统上的 Php7 Redis 客户端

    我使用 alpine 3 5 作为基础镜像制作了一个 docker 镜像 我希望我的 php 应用程序在容器内运行以与 redis 服务器通信 但我在 Alpine 中找不到任何 php7 redis 客户端 有解决办法吗 我尝试使用pec
  • 将图像分成3*3的块

    我有一个矩阵 它的维度恰好不是 3 的倍数 或者可能是 3 的倍数 我们怎样才能将整个图像分成3 3矩阵块 可以忽略最后不属于3 3倍数的 另外 3 3矩阵可以保存在数组中 a 3 b 3 window size x size f 1 a
  • 在文本框中输入文本

    谁能告诉我为什么会这样jsFiddle http jsfiddle net 4NwZ9 不起作用 这个想法很简单 只是假设将选定的文本输入到文本框中 HTML
  • 配置 Qt Creator 以与 GDB 一起使用

    我的机器上有 GDB 和 CDB 我的 Qt 创建者正在使用 CDB 进行调试 我试图指向GDB路径 但它不起作用 如何设置 Qt Creator 使用 GDB 进行调试 确保您已将 Qt Creator 设置为 调试 构建配置 构建菜单
  • 在鼠标悬停在画布上的形状/位置(坐标)上时显示工具提示

    当鼠标悬停在画布上的某些位置时 我试图显示相应的工具提示 例如 当鼠标在画布上的坐标为 100 100 时 显示tooltip1 当鼠标位置在 200 200 时 显示tooltip2等 我已经添加了事件侦听器来检测鼠标移动并获取鼠标位置
  • 使用 Java 验证 CSV 文件

    我正在逐行读取文件 如下所示 FileReader myFile new FileReader File file BufferedReader InputFile new BufferedReader myFile Read the fi
  • DDS - 推荐哪一种 - OpenSplice 还是 CoreDX? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我需要 C winform 应用程序和 android 本机应用程序来使用 DDS 数据分发服务 每个人都可以是订阅者和作者 对我来说重要的是