SOME/IP 协议介绍(六)接口设计的兼容性规则

接口设计的兼容性规则(信息性)

对于所有序列化格式而言,向较新的服务接口的迁移有一定的限制。使用一组兼容性规则,SOME / IP允许服务接口的演进。可以以非破坏性的方式进行以下添加和增强:

• 向服务中添加新方法

• 必须先在服务器端实现。

• 将参数添加到方法的输入或输出参数的末尾

• 当接收者首先添加它们时,必须定义默认值

• 当发送者首先添加它们时,接收者将忽略它们

• 将异常添加到方法可以引发的异常列表中

• 应先更新客户端

• 如果异常未知,则需要抛出"未知异常"。但是,异常描述字符串可以复制过来。

• 向联合中添加新类型

• 应先更新接收者

• 如果未知,则可以跳过(发送方先更新)

• 为新方法定义新数据类型

• 为新方法定义新异常

并非所有这些更改都可以首先在客户端或服务器端引入。在某些情况下,只能首先更改客户端或服务器。例如,使用较新的实现发送附加参数时,旧实现只能跳过此参数。

例如,当消息的接收者添加要接收的新参数时,必须定义默认值。这在发送具有旧版本服务的发送方发送不带附加参数的消息时需要。

接口规范中的某些更改可以以非破坏性的方式实现:

• 删除函数中的参数

• 需要先在接收者端添加默认值,并且参数需要位于列表末尾

• 从函数中删除异常

• 服务器端很简单

• 如果遇到旧异常,客户端需要抛出"未知异常"

• 可以重命名参数、函数和服务,因为名称不会被传输。生成的代码只查看ID和参数排序,迁移中不应更改它们

如果接口规范配置结构体具有长度字段,则可以执行以下操作:

• 向结构体末尾添加/删除字段

目前不支持以下更改:

• 重新排序参数

• 将超类型替换为子类型(如面向对象编程语言中)

相关推荐
软件资深者1 分钟前
口袋系统WinToGo(免费)新一代PE:在U盘中还原修复系统,支持Mac苹果设备
运维·服务器
丁劲犇2 分钟前
老旧CentOS7服务器JVM加载Jar缓慢排查:竟与NTP服务器有关
服务器·jvm·jar·java8·ntp·加载慢
德迅云安全—珍珍4 分钟前
服务器cpu过高是什么情况,造成的原因有哪些?
运维·服务器
Psycho_MrZhang5 分钟前
Claude高质量产出
java·服务器·网络
运维行者_7 分钟前
用Applications Manager监控HAProxy:保障负载均衡高效稳定
运维·开发语言·前端·数据库·tcp/ip·负载均衡·服务器监控
北京耐用通信8 分钟前
耐达讯自动化Profinet转Devicenet网关:汽车制造产线的“协议桥梁”
人工智能·物联网·网络协议·自动化·制造·信息与通信
Jason_wu869 分钟前
Mac OS 上charles抓包配置,支持Https访问
网络协议·http·https
以太浮标11 分钟前
华为eNSP模拟器综合实验之- 前缀列表(IP Prefix-list --匹配和控制路由信息的强大工具)
tcp/ip·华为·智能路由器·list
晨非辰13 分钟前
Linux包管理器速成:yum/apt双精要/镜像源加速/依赖解析30分钟通解,掌握软件安装的艺术与生态哲学
linux·运维·服务器·c++·人工智能·python
有代理ip3 小时前
详解 HTTP 代理 8080 与 3128 的端口特性及用途
网络·网络协议·http