跳到主要内容

插件的微服务模式

微服务是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_04CONTENT_2_05BAD_REQUEST_4_00NOT_FOUND_4_0

    完整定义参考:er-coap-constants.h

  • Payload: 响应消息的负载部分
  • Payload format: 负载部分的格式

访问插件微服务

微服务的请求和响应通过插件总线(WA-BUS)发送,插件请求之间可以相互请求微服务。

以MODBUS插件为例,说明访问插件的微服务方法:

从内部插件访问

如上图中内部插件other plugin访问/mb2微服务的过程:

  1. other plugin发送request,request包含URI /mb2
  2. request被WA-EDGE框架自动路由到modbus插件
  3. modbus插件处理该请求,根据URI中的查询字段定位到目标设备的从站ID,地址等,通过工业总线读或者写该设备
  4. modbus插件提供Response给框架
  5. 框架自动路由Response给对应的请求者other plugin

从本地应用的外部访问

如上图中本地程序client side从框架外部访问/mb2微服务的过程:

  1. client side发送CoAP请求(/mb2)到wa-core-plugin所支持的5683端口
  2. wa-core-plugin将该请求发送至WA-EDGE框架的总线wa-bus
  3. 执行上面内部插件访问的流程,请求被Modbus插件处理后,响应消息自动返回至wa-core-plugin
  4. wa-core-plugin将响应消息转换成CoAP格式发送回client side