热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

DDS和SOME/IP有什么区别?

如何解决《DDS和SOME/IP有什么区别?》经验,为你挑选了1个好方法。

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



1> 小智..:

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

SOME/IP专为汽车行业设计.SOME/IP是作为AUTOSAR的一部分开发的规范集合,描述了其序列化协议,服务发现和用于与Classic AUTOSAR集成的变换器.

DDS(数据分发服务)针对更广泛的工业物联网域.它是由Object Management Group(OMG)发布的一系列开放标准.它专为分布式实时系统而设计,用于许多行业,包括运输,能源,医疗系统,工业自动化,航空航天和国防等.商业和开源都有许多独立的实施.DDS系列的第一个规范于2004年发布,从那时起已发展成为一套12个DDS标准,其中包括标准的线路协议(DDS-RTPS),API(DDS-PSM-CXX,DDS-PSM-JAVA)从IDL到C,Ada等的映射)类型系统(DDS-XTYPES),数据传输模式(DDS用于以数据为中心的发布 - 订阅和DDS-RPC用于请求 - 回复),安全性(DDS-SECURITY) ,系统描述(DDS-XML),数据建模(IDL)和到其他通信框架的网关(DDS-WEB,DDS-OPCUA和DDS-XRCE).

从技术和概念上讲,存在许多差异,因此我将它们组织成不同的类别:

沟通模式

应用程序编程接口(API)

网络传输

安全方法

服务质量

使用其他规格

沟通模式

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

DDS从根本上提供了一种解耦的,以数据为中心的发布订阅模型.阿苏称为"数据总线"模式.应用程序参与DataBus对等,可以发布/订阅任何数据(由DDS-Topic名称标识)以及调用或实现任何服务操作(由DDS-Service名称标识).DDS完全是点对点的 - 它不需要中间的任何经纪人.有一种发现机制不断运行以检测引用相同主题名称的兼容发布者和订阅者应用程序; 一旦检测到它们就开始直接交换信息.订户应用程序可以指定过滤器(内容或基于时间)以指示他们想要接收的信息.发布者可以在发布者端进行管理,以减少线路上的信息.

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

应用程序编程接口

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(实时发布订阅)的有线协议,该协议在独立于平台的模型中定义,该模型可以映射到不同的网络传输协议.大多数DDS(DDS-RTPS)实现至少支持UDP,TCP和共享内存.RTPS实现了与传输无关的可靠性和分段协议,该协议在任何传输之上运行,包括具有多播的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规范的第2.2.3节或不同实现的文档中获得更多详细信息(例如参见RTI Connext DDS的Qos Cheat-Sheet).

使用其他规格

一些/ IP主要由AUTOSAR用于汽车应用.

DDS具有更加横向的用途.它通常直接用作连接框架.实际上,它被工业互联网联盟(IIC)确定为IIoT的"核心连接框架"之一(参见 工业物联网连接框架文档).它也被用作其他标准和框架的一部分,如OpenFMB,ROS2,MD PnP,FACE,它也被包含在AUTOSAR Adaptive中(从版本18.03开始).


推荐阅读
  • 本文详细介绍了macOS系统的核心组件,包括如何管理其安全特性——系统完整性保护(SIP),并探讨了不同版本的更新亮点。对于使用macOS系统的用户来说,了解这些信息有助于更好地管理和优化系统性能。 ... [详细]
  • 本文详细介绍了Java中org.eclipse.ui.forms.widgets.ExpandableComposite类的addExpansionListener()方法,并提供了多个实际代码示例,帮助开发者更好地理解和使用该方法。这些示例来源于多个知名开源项目,具有很高的参考价值。 ... [详细]
  • 2023年京东Android面试真题解析与经验分享
    本文由一位拥有6年Android开发经验的工程师撰写,详细解析了京东面试中常见的技术问题。涵盖引用传递、Handler机制、ListView优化、多线程控制及ANR处理等核心知识点。 ... [详细]
  • 本文详细介绍了Java中org.neo4j.helpers.collection.Iterators.single()方法的功能、使用场景及代码示例,帮助开发者更好地理解和应用该方法。 ... [详细]
  • 使用Python在SAE上开发新浪微博应用的初步探索
    最近重新审视了新浪云平台(SAE)提供的服务,发现其已支持Python开发。本文将详细介绍如何利用Django框架构建一个简单的新浪微博应用,并分享开发过程中的关键步骤。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • Java 中的 BigDecimal pow()方法,示例 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 深入解析Spring Cloud Ribbon负载均衡机制
    本文详细介绍了Spring Cloud中的Ribbon组件如何实现服务调用的负载均衡。通过分析其工作原理、源码结构及配置方式,帮助读者理解Ribbon在分布式系统中的重要作用。 ... [详细]
  • 本文详细介绍了Akka中的BackoffSupervisor机制,探讨其在处理持久化失败和Actor重启时的应用。通过具体示例,展示了如何配置和使用BackoffSupervisor以实现更细粒度的异常处理。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • DNN Community 和 Professional 版本的主要差异
    本文详细解析了 DotNetNuke (DNN) 的两种主要版本:Community 和 Professional。通过对比两者的功能和附加组件,帮助用户选择最适合其需求的版本。 ... [详细]
  • 在使用 MUI 框架进行应用开发时,开发者常常会遇到 mui.init() 和 mui.plusReady() 这两个方法。本文将详细解释它们的区别及其在不同开发环境下的应用。 ... [详细]
  • 网络运维工程师负责确保企业IT基础设施的稳定运行,保障业务连续性和数据安全。他们需要具备多种技能,包括搭建和维护网络环境、监控系统性能、处理突发事件等。本文将探讨网络运维工程师的职业前景及其平均薪酬水平。 ... [详细]
author-avatar
一诺千金2502859287
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有