什么是服务
- “服务” ROS 官方叫 service,就是响应别人的请求,接收别人的问题,回答别人的问题,最后反馈问题给被服务者。
- 在这一互动中,服务方叫服务端,被服务方缴客户端。
什么是通信
- 类似于之前写的:什么是话题通信?,在服务通信中,这一概念相对于话题通信更加贴切于生活。
- 比如上学的时候学生向老师请教问题,老师过倾听学生提出的问题,然后对问题进行思考处理,最后告诉学生问题该怎么解决。在这一过程中,
- 老师作为服务端,学生作为客户端;
- 学生向老师提问题,就相当于客户端向服务端发出请求;
- 老师思考问题就类似于服务端在处理请求;
- 最后老师告诉学生问题的解答方法,就类似于服务端向客户端反馈处理结果。
怎么通信
- 与话题通信类似,服务通信也是需要向中间人Master提交注册信息,然后获取到对方的信息,最后直接进行通信,服务端与客户端之间的通信不再需要第三方的参与。
- 与话题通信不同的是:
- 话题通信是发布订阅模式,一发一收,发布者不受订阅者的影响;
服务通信是请求响应模式,双方均会发布和接收,且服务端根据客户端提供的信息发布数据; - 话题通信,接收双方的启动顺序无确切要求;
服务通信,一般是服务先启动,然后再启动客户端,假如客户端未进行挂起等待处理,在服务端未启动的情况下直接启动客户端,客户端程序会直接结束。
- 话题通信是发布订阅模式,一发一收,发布者不受订阅者的影响;