主题 vs 服务 vs 行动
在设计系统时,界面主要有三种风格。内容规范在 接口概述.写这篇文章的目的是为读者提供何时使用各类界面的指南。
主题
应用于连续数据流(传感器数据、机器人状态......)。
连续数据流。数据可随时发布和订阅,不受任何发送方/接收方的影响。多对多连接。一旦数据可用,回调就会接收数据。发布者决定何时发送数据。
服务
应用于快速终止的远程过程调用,如查询节点状态或进行 IK 等快速计算。它们绝不能用于运行时间较长的进程,特别是在发生特殊情况时可能需要抢占先机的进程,而且它们绝不能改变或依赖于状态,以避免对其他节点产生不必要的副作用。
简单的阻塞调用。主要用于速度较快的任务,如请求特定数据。语义上用于处理请求。
行动
适用于移动机器人或运行时间较长但在执行过程中提供反馈的任何离散行为。
行动最重要的特性是它们可以被抢占,而行动服务器应始终干净利落地执行抢占。
行动可以在目标的整个生命周期内保持状态,也就是说,如果在同一服务器上并行执行两个行动目标,则可以为每个客户端保存一个单独的状态实例,因为目标的 ID 是唯一标识的。
需要几秒钟才能终止的慢速感知例程或启动较低级别的控制模式,都是很好的行动用例。
更复杂的无阻塞后台处理。用于较长的任务,如执行机器人动作。从语义上讲,可用于真实世界的行动。