参考:https://zhuanlan.zhihu.com/p/626401884

一、事件Events: 提供周期性发送的数据,或在提供者到订阅服务器的更改时发送的数据。

二、方法Methods: 远程过程调用, 采用Request-Response机制进行通信, Fire&Forget

三、字段Fields: 是下列三个中的一个或多个的组合

        --- notifier: 遵循订阅-发布机制,以事件组的形式来订阅, Server发送到Client

        --- getter: 请求/响应调用, Client调用来显式地查询提供程序的值, request消息中payload为空,response消息中payload中的值就是field的值

        --- setter: 请求/响应调用,Client想更改提供程序端值时, Server要将Client设置的数据通过Response反馈给Client,以便Client确认设置的数据是否成功。

Request-Response和Fire & Forget本质区别

区别 Request-Response Fire & Forget
响应机制 同步,服务端必须返回响应 异步,客户端发送后立即继续执行,不阻塞。不等待服务端的响应,服务端也不会返回任何响应。
可靠性 高(明确知道结果) 低(无法确认是否处理)
网络开销 较高(需传输响应) 较低(仅发送请求)
适用场景

需确认结果的调用(如读取传感器数据、配置参数等)。

无需确认的单向通知(比如,日志上报、事件通知等无需确认的场景。);
实时性要求高但允许偶尔丢失数据的场景(如周期性状态广播)。

Fire & Forget 和 事件(Events)的本质区别

特性 Fire & Forget方法 事件(Events)
通信模型 单向的远程过程调用(RPC) 服务端主动推送的发布/订阅(Pub-Sub)模型
触发方 由客户端主动发起调用 由服务端主动触发推送(如状态变化时)
数据方向 客户端→服务端(单向) 服务端→客户端(单向)
协议支持 基于SOME/IP的RPC机制(Message Type=0x01) 基于SOME/IP的Event/Field机制
数据时效性 按需发送(客户端触发) 实时或周期性推送(服务端控制)
场景对比
  • 客户端触发的临时通知(如客户端主动上报日志、一次性告警)。

  • 无需服务端维护状态(例如,客户端上报自身运行状态,服务端无需记录)。服务端状态变化的主动广播(如传感器数据更新、系统模式切换)。

  • 需要多客户端订阅的场景(如多个客户端监听同一服务端事件)。

 Notifier机制与Events(事件)都遵循发布-订阅(Pub-Sub)模型,本质区别:

特性 Fields + Notifier Events
数据模型

表示服务端的某个可变状态变量(如车速、温度等):

  • Getter/Setter方法:客户端可通过RPC主动读取(Getter)或修改(Setter)字段值。

  • Notifier:当字段的值发生变化时,服务端自动通知所有订阅的客户端(类似“属性变更通知”)。

服务端主动触发的单向通知,
离散的事件或信号
(如告警、按键按下)

客户端只能订阅

读写控制 支持Getter/Setter/Notifier 仅支持订阅(无Setter/Getter)
触发条件 值变化时自动通知(状态驱动) 服务端显式触发(事件驱动)
数据关联性 始终关联一个持久状态 可能独立于状态(如瞬时事件)
典型用例 车速、温度等连续状态同步 错误告警、用户按键事件

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐