gpt4 book ai didi

data-distribution-service - DDS 和 SOME/IP 有什么区别?

转载 作者:行者123 更新时间:2023-12-04 04:26:12 31 4
gpt4 key购买 nike

SOME/IP 是一种汽车中间件解决方案,可用于控制消息。
DDS 也是用于通信的汽车中间件。
我想知道它们之间有什么区别?
而且,为什么以及何时应该选择其中之一?

最佳答案

SOME/IP 和 DDS 都允许分布式应用程序使用发布/订阅模式和服务请求/回复模式 (RPC) 进行通信。但也存在显着差异。

SOME/IP 专为汽车行业设计。 SOME/IP 是作为 AUTOSAR 的一部分开发的规范集合,描述了其 序列化协议(protocol) 服务发现 与 Classic 转换器集成 0x25181921134119211341921414141214192113419213419211341921414141419211341192113418

DDS(数据分发服务)针对更广泛的工业物联网领域。它是由对象管理组 (OMG) 发布的一系列开放标准。它是专门为分布式实时系统设计的,用于many industries,包括交通、能源、医疗系统、工业自动化、航空航天和国防等。有许多商业和开源的独立实现。 DDS 系列中的第一个规范于 2004 年发布,此后已发展为一组 12 DDS standards ,其中包括标准 线协议(protocol) (DDS-RTDDSM-XX, APIS-RTDSM-XX,以及从 IDL 到 C、Ada 等的映射)一个 类型系统 (DDS-XTYPES), 数据交付模式 0x251819141142 数据交付模式 0x25181919212 3 RPC 14D 12 3 RPC 订阅 4 2 1 DRPC 19 订阅 4 drpc9re 4ds 9republish-4ds 9republish-4ds 9republish-4ds92219 (DDS-SECURITY),系统描述(DDS-XML),数据建模(IDL),和网关到其它通信框架(DDS-WEB,DDS-OPCUA和DDS-XRCE)。

在技​​术和概念上存在许多差异,因此我将它们分为不同的类别:

  • 通信模式
  • 应用程序编程接口(interface) (API)
  • 网络传输
  • 安全方法
  • 服务质量
  • 使用其他规范

  • 沟通模式

    SOME/IP 可以看作是一种基于对象的面向服务的体系结构。通过实例化服务对象向系统提供信息,这些由客户端应用程序访问,客户端应用程序为他们想要访问的每个服务实例实例化相应的“代理”对象。客户端应用程序通过将代理对象附加到服务对象并使用它来监视事件和字段更改来订阅信息。它们还可以调用服务对象上的操作来执行远程过程调用或读/写特定字段。

    DDS 从根本上提供了一个解耦的、以数据为中心的发布订阅模型。 Aso 称为“数据总线”模式。应用程序作为对等方参与 DataBus 并可以发布/订阅任何数据(由 DDS-Topic 名称标识)以及调用或实现任何服务操作(由 DDS-Service 名称标识)。 DDS 是完全对等的——它不需要任何中间人。有一个持续运行的发现机制来检测引用相同主题名称的兼容发布者和订阅者应用程序;一旦被发现,他们就开始直接交换信息。订阅者应用程序可以指定过滤器(基于内容或基于时间)来指示他们想要接收的信息。发布方可以进行筛选以减少传输到线路上的信息。

    DDS 和 SOME/IP 之间的显着区别在于,使用 DDS,应用程序不需要绑定(bind)到服务的特定实现。它简单地引用主题和服务,并且可以完全透明地进行一对一或一对多通信,而无需对应用程序代码进行任何更改。它确实需要跟踪单独的对等点的存在或管理任何新对象以响应对等点的加入或离开。这一切都是自动处理的。从这个意义上说,它比 SOME/IP 更具动态性。

    应用程序编程接口(interface)

    SOME/IP 没有定义标准 API,实现通常提供 C++ API,但它们不能跨实现移植。然而,通常 SOME/IP 用作 AUTOSAR 的一部分,它确实定义了一些标准 API。

    DDS 具有适用于多种语言的标准 API。对于 C++ 和 Java,这些都包含在 DDS-PSM-JAVA 和 DDS-PSM-CXX 规范中。标准 C 和 ADA API 源自 IDL 到 C 和 ADA 规范。除此之外,还有针对 C# 和其他语言的供应商特定 API。因此,通常可以移植 DDS 应用程序并在 DDS 实现之间切换。

    网络传输

    SOME/IP 同时支持 UDP 和 TCP 进行数据传输。 AUTOSAR 4.3 引入了对 UDP 大于 1400 字节的有效负载分段的支持。为了可靠通信,SOME/IP 回退到 TCP。

    DDS 使用了一种称为 RTPS(实时发布订阅)的有线协议(protocol),该协议(protocol)定义在独立于平台的模型中,可以映射到不同的网络传输协议(protocol)。大多数 DDS (DDS-RTPS) 实现至少支持 UDP、TCP 和共享内存。 RTPS 实现了与传输无关的可靠性和分段协议(protocol),该协议(protocol)运行在任何传输之上,包括具有多播的 UDP。因此,使用 DDS 可以通过多播 UDP 处理大数据和可靠数据。有些/IP 不能这样做。

    许多 DDS 实现提供了“自定义传输”SDK,因此可以通过您自己的自定义传输运行 DDS,而不会牺牲任何功能和 QoS。这对于 SOME/IP 是不可能的,因为某些功能(如可靠性和分段)必须由传输实现。

    安全方法

    一般来说,SOME/IP 也依赖传输来确保安全。因此,要安全地使用它,就需要在 TLS 或 DTLS 上运行。

    也可以通过 TLS 或 DTLS 作为传输运行 DDS,但这不是首选解决方案。相反,对于 DDS,最好使用 DDS 安全规范中定义的机制,这些机制与传输无关。 DDS 安全性还提供了更细粒度的安全控制和访问控制语言,因此可以单独保护 DDS 域和主题,并区分对主题的读写权限。此外,由于 DDS 安全性与传输无关,因此可以与任何传输一起使用,包括共享内存、多播或自定义应用程序定义的传输。

    服务质量支持

    SOME/IP 仅提供一种用于选择 UDP 与 TCP 的“可靠性”Qos 设置。其他任何事情都必须使用自定义应用程序逻辑来实现,这取决于 QoS 策略,这可能非常困难。此外,应用层代码不是那么可移植,需要所有应用程序都包含相同的代码或至少链接一个通用的非标准库。

    DDS 提供了许多 QoS 策略,使用户能够以声明方式指定如何在发布者和订阅者之间交换信息。 DDS 标准定义了 20 多个单独的策略。这些策略不仅控制可靠性,还控制其他方面,如资源使用、数据优先级、数据可用性和故障转移。例如,QoS 设置提供了建立 截止日期 的能力,以便在发布者或订阅者应用程序未能以特定速率发送或传递信息时提供通知;设置数据的 持久性 ,以便在生成和发送信息后可以将其重新传输给加入的订阅者应用程序;配置发布者和订阅者应用的 历史深度;部署冗余系统,基于 所有权强度,配置自动 生动活泼信息自动选择某一张源确定远程应用程序是否依然健在,而且执行 自动故障转移当应用程序不响应。您可以从 DDS Specification 的第 2.2.3 节或不同实现的文档中获得更多详细信息(例如参见此 Qos Cheat-Sheet from RTI Connext DDS )。

    从其他规范使用

    SOME/IP 主要由 AUTOSAR 用于汽车应用。

    DDS 有更横向的用途。它通常直接用作连接框架。事实上,它被工业互联网联盟 (IIC) 确定为 IIoT 的“核心连接框架”之一(参见 Industrial Internet of Things Connectivity Framework 文档)。
    它也被用作其他标准和框架的一部分,例如 OpenFMBROS2MD PnPFACE ,并且它的 18 23 24 14 也包含 10 142 14

    关于data-distribution-service - DDS 和 SOME/IP 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51182471/

    31 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com