热门标签 | 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开始).


推荐阅读
  • 本文详细介绍了Java中org.eclipse.ui.forms.widgets.ExpandableComposite类的addExpansionListener()方法,并提供了多个实际代码示例,帮助开发者更好地理解和使用该方法。这些示例来源于多个知名开源项目,具有很高的参考价值。 ... [详细]
  • 如何配置Unturned服务器及其消息设置
    本文详细介绍了Unturned服务器的配置方法和消息设置技巧,帮助用户了解并优化服务器管理。同时,提供了关于云服务资源操作记录、远程登录设置以及文件传输的相关补充信息。 ... [详细]
  • DNN Community 和 Professional 版本的主要差异
    本文详细解析了 DotNetNuke (DNN) 的两种主要版本:Community 和 Professional。通过对比两者的功能和附加组件,帮助用户选择最适合其需求的版本。 ... [详细]
  • 优化联通光猫DNS服务器设置
    本文详细介绍了如何为联通光猫配置DNS服务器地址,以提高网络解析效率和访问体验。通过智能线路解析功能,域名解析可以根据访问者的IP来源和类型进行差异化处理,从而实现更优的网络性能。 ... [详细]
  • 本文详细介绍了Java中org.neo4j.helpers.collection.Iterators.single()方法的功能、使用场景及代码示例,帮助开发者更好地理解和应用该方法。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • c# – UWP:BrightnessOverride StartOverride逻辑 ... [详细]
  • 尽管某些细分市场如WAN优化表现不佳,但全球运营商路由器和交换机市场持续增长。根据最新研究,该市场预计在2023年达到202亿美元的规模。 ... [详细]
  • 如何在窗口右下角添加调整大小的手柄
    本文探讨了如何在传统MFC/Win32 API编程中实现类似C# WinForms中的SizeGrip功能,即在窗口的右下角显示一个用于调整窗口大小的手柄。我们将介绍具体的实现方法和相关API。 ... [详细]
  • 360SRC安全应急响应:从漏洞提交到修复的全过程
    本文详细介绍了360SRC平台处理一起关键安全事件的过程,涵盖从漏洞提交、验证、排查到最终修复的各个环节。通过这一案例,展示了360在安全应急响应方面的专业能力和严谨态度。 ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 本文总结了在使用Ionic 5进行Android平台APK打包时遇到的问题,特别是针对QRScanner插件的改造。通过详细分析和提供具体的解决方法,帮助开发者顺利打包并优化应用性能。 ... [详细]
  • 本文详细介绍了如何构建一个高效的UI管理系统,集中处理UI页面的打开、关闭、层级管理和页面跳转等问题。通过UIManager统一管理外部切换逻辑,实现功能逻辑分散化和代码复用,支持多人协作开发。 ... [详细]
  • JavaScript中属性节点的类型及应用
    本文深入探讨了JavaScript中属性节点的不同类型及其在实际开发中的应用,帮助开发者更好地理解和处理HTML元素的属性。通过具体的案例和代码示例,我们将详细解析如何操作这些属性节点。 ... [详细]
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社区 版权所有