当前位置: 首页 > news >正文

SOME/IP服务接口

本系列文章将分享我在学习 SOME/IP 过程中积累的一些感悟,并结合 SOME/IP 的理论知识进行讲解。主要内容是对相关知识的梳理,并结合实际代码展示 SOME/IP 的使用,旨在自我复习并与大家交流。文中引用了一些例图,但由于未能找到原作者信息,若存在侵权问题,请联系删除。

什么是Some/IP

        在前面的博客中我们介绍了SOA,英文翻译过来是面向服务。SOME/IP(Scalable service-Oriented Middleware over IP)是一种基于服务导向架构(SOA)设计的中间件协议,专为汽车行业中的分布式计算系统而设计。它用于在汽车电子系统(特别是车载网络和 ECU 之间)中实现高效的数据交换和通信。SOME/IP 基于 IP 协议,允许不同的车载控制单元(ECU)之间进行通信,支持高效的服务发现和消息传输。

        这一章主要介绍的是SOME/IP协议的服务接口

服务接口

1.1什么是服务接口

        在 SOME/IP 中,服务接口 是一种描述服务提供者所能提供功能的协议,它是 SOA(服务导向架构)实现的核心。通过这些服务接口,客户端能够找到服务、调用服务并获取返回值。服务接口不仅定义了具体的操作方法和数据格式,还规定了通信的协议和方式,保证了分布式系统中节点间的互操作性和通信效率。说通俗点在 SOME/IP 中,服务接口就像一个菜单,上面列出了一个服务可以提供的所有操作或功能。你就像在餐厅点菜一样,看到这个菜单后,决定你想要的服务。

1.2服务接口种类

        在interface中,一般有三种,Method,Event,以及Field.其中Method又分RR以及FF,即Request Response 以及Fire Forget .Field又分Setter,Getter,Notifer.

        

1.2.1 Method

        RR:Request Response

        FF:   Fire Forget

通俗点来讲RR就是有返回值也就是int fun(),假设是int .另一个就是void fun();RR请求在客户端把数据发给服务端后,服务端讲处理后的结果发回给客户端。另一个就是不用回消息。Method必须由客户端发起,这是一个 请求/响应 模式。

1.2.2 Event

        Event和Method相比,他是由服务端发给客户端的消息时间。当客户端订阅事件组之后,就可以接受了。就是一种发布订阅模式。其中一个event必须加入至少一个事件组,可以是多个。一个事件组可以包含多个event.必须订阅event所在事件组,不能具体订阅某一个event.这就差DDS一些距离了,灵活度不够好。DDS允许客户端对单个主题(topic)进行订阅,可以选择性地订阅特定的主题(event)。DDS 还可以通过丰富的 QoS(质量服务)配置来定制通信行为。

1.2.3 Field

        field字段/属性 是一段内存空间的值,保存在server端。其中getter(method):获取,client可以通过该方法主动从server内存空间获取feild值。setter就是设置field值,notifier(event),当filed值发生变化,就将最新的值发给client。需要注意的是,一个field必须加入事件组,因为他要使用notifer,在这方面他和event要求差不多。

服务ID

        

        除了Filed都有ID,Server ID, Method ID,Event ID, EventGroup ID.同一服务的同类型接口ID不能重复。其中Service为最为的ID,它包含Server ID, Method ID,Event ID, EventGroup ID.Method按类型往下细分有划分为 RR FF Setter Gettet.

        同一服务的同类型接口ID不能重复。这句话怎么理解呢?比如我的Service ID是0x1234 那么其内部的Method RR类型的为0x0001 第二个FF类型的就必须是0x0002.但是在不同服务ID中比如Service ID是0x2234,那么就可以相同。就是一个域的概念。

        

http://www.lryc.cn/news/525387.html

相关文章:

  • Java 生成 PDF 文档 如此简单
  • 深入探究 YOLOv5:从优势到模型导出全方位解析
  • 【PoCL】运行 LLVM 中 pass 优化过程详解
  • 如何将使用unsloth微调的模型部署到ollama?
  • 【测试】UI自动化测试
  • SSM开发(二) MyBatis两种SQL配置方式及其对比
  • 【Redis】在ubuntu上安装Redis
  • JS-Web API -day06
  • JS-Web API -day03
  • 进程优先级
  • c语言(转义字符)
  • easyexcel读取写入excel easyexceldemo
  • 【人工智能数学基础篇】——深入详解矩阵分解:奇异值分解(SVD)与主成分分析(PCA)在数据降维与特征提取中的应用
  • ThreeJS示例教程200+【目录】
  • DC-DC稳压电源——实战(基于Ti5450芯片)基础知识篇(1)
  • pyrender 渲染mesh
  • 防火墙安全策略
  • selenium clear()方法清除文本框内容
  • (回溯分割)leetcode93 复原IP地址
  • 高性能队列 Disruptor 在 IM 系统中的实战
  • 原生HTML集合
  • ES6 简单练习笔记--变量申明
  • 2025.1.21——六、BUU XSS COURSE 1
  • Linux - 五种常见I/O模型
  • 【负载均衡式在线OJ】加载题目信息(文件版)
  • “上门按摩” 小程序开发项目:基于 SOP 的全流程管理
  • WPF1-从最简单的xaml开始
  • 2025牛客寒假算法营2
  • 编译Android平台使用的FFmpeg库
  • 【C++高并发服务器WebServer】-2:exec函数簇、进程控制