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开始).