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

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.kler.cn/a/517096.html

相关文章:

  • STM32 FreeRTOS中断管理
  • 网络(三) 协议
  • ASP.NET Core 6.0 如何处理丢失的 Startup.cs 文件
  • 线性数据结构
  • UDP 广播组播点播的区别及联系
  • 算法竞赛之离散化技巧 python
  • 干货分享|算法竞赛真题讲解2
  • Liunx上Jenkins 持续集成 Java + Maven + TestNG + Allure + Rest-Assured 接口自动化项目
  • 从语音识别到图像识别:AI如何“看”和“听”
  • 状态模式——C++实现
  • 分布式 IO 模块携手 PLC,开启设备车间降本增效新篇章
  • git cherry-pick从一个分支中选择一个或多个提交(commit)并将其应用到当前分支
  • OpenStack基础架构
  • 以Python 做服务器,N Robot 做客户端,小小UI,拿捏
  • 如何使用Midjourney生成中国蛇年的灵蛇绘画作品
  • Spring WebSocket 与 STOMP 协议结合实现私聊私信功能
  • 【Golang 面试题】每日 3 题(四十三)
  • Linux下动静态库的制作与使用
  • C#编程:List.ForEach与foreach循环的深度对比
  • vim在命令模式下的查找功能
  • Redis内部数据结构--跳表详解
  • 【2024年华为OD机试】 (A卷,100分)- 微服务的集成测试(JavaScriptJava PythonC/C++)
  • 【算法篇】从汉明重量的基础理解到高效位运算优化详解
  • AI如何帮助解决生活中的琐碎难题?
  • 智能风控 数据分析 groupby、apply、reset_index组合拳
  • Cosmos学习记录