插件的微服务模式
微服务是WA-EDGE插件的主要设计模式。 每个微服务可以表示对某工业设备的读写访问, 如用URI (/modbus)表示对modbus设备寄存器的读写访问。
微服务请求包含以下组成:
- Method: GET, PUT, POST, DELETE。 一般用GET表示读设备,PUT表示写设备。
- URI: 服务标识符,一般由path和query两个部分组成,如/aaa/bbb?ccc=1,但是两个插件不应该提供相同的URI。
- Payload: 请求消息的负载部分
- Payload format: 常用格式有
TEXT_PLAIN(0)
,APPLICATION_JSON(50)
完整定义参考:er-coap-constants.h
微服务响应包含以下组成:
- Status: 响应状态码,常用的有
CHANGED_2_04
,CONTENT_2_05
,BAD_REQUEST_4_00
,NOT_FOUND_4_0
等完整定义参考:er-coap-constants.h
- Payload: 响应消息的负载部分
- Payload format: 负载部分的格式
访问插件微服务
微服务的请求和响应通过插件总线(WA-BUS)发送,插件请求之间可以相互请求微服务。
以MODBUS插件为例,说明访问插件的微服务方法:
从内部插件访问
如上图中内部插件other plugin
访问/mb2
微服务的过程:
other plugin
发送request,request包含URI/mb2
- request被WA-EDGE框架自动路由到modbus插件
- modbus插件处理该请求,根据URI中的查询字段定位到目标设备的从站ID,地址等,通过工业总线读或者写该设备
- modbus插件提供Response给框架
- 框架自动路由Response给对应的请求者
other plugin
从本地应用的外部访问
如上图中本地程序client side
从框架外部访问/mb2
微服务的过程:
client side
发送CoAP请求(/mb2
)到wa-core-plugin
所支持的5683端口wa-core-plugin
将该请求发送至WA-EDGE框架的总线wa-bus
- 执行上面内部插件访问的流程,请求被Modbus插件处理后,响应消息自动返回至
wa-core-plugin
wa-core-plugin
将响应消息转换成CoAP格式发送回client side