备案网站建设方案书,济南专业的网站建设公司,网站静态文件,wordpress WP-WikiC轻量级的RPC库#xff0c;可用于任何项目中#xff0c;甚至单片机。 方便平台直接相互进行功能调用。
基于asio的实现 asio_net 也可用在esp32适用于ESP32/ESP8266的实现 esp_rpc
目前也有一些轻量的库#xff0c;参考了protobuf#xff08;或者依赖它#xff09;…C轻量级的RPC库可用于任何项目中甚至单片机。 方便平台直接相互进行功能调用。
基于asio的实现 asio_net 也可用在esp32适用于ESP32/ESP8266的实现 esp_rpc
目前也有一些轻量的库参考了protobuf或者依赖它基于IDL。 其实对于中小型的项目而言使用IDL并不是一个好的选择使用也不方便。
仓库地址
https://github.com/shuai132/RpcCore
以下是README方便SEO。最新文档请打开上述链接。
RpcCore
RPC Core library, designed for IOT, support most microchip(Arduino、STM32、ESP8266)
Introduction
完善的RPC框架(如gRPC)使用复杂尤其在嵌入式平台更不现实。 本项目提供轻量级的消息注册、解析分发功能以及方便使用的API。
注本仓库只提供协议层和API不包含传输层实现。基于TCP的实现见文末Links。
Features
简单高效易用 支持性能受限的平台Header-Only 仅有头文件支持任意形式的连接串口、TCP等提供基本数据类型、结构体、字符串、二进制类型的序列化实现方便自定义消息类型 提供了Flatbuffers、json的实现提供Dispose基于RAII自动取消请求 方便UI相关应用支持设置超时重试次数std::future接口
Requirements
C11数据收发需要完整的数据包例如WebSocket。 如果用Socket/串口等需要自己实现消息打包解包。可使用PacketProcessor 或 data_packer.hpp
Usage
在自己的项目添加搜索路径
include_directories(RpcCore的目录)基本用法省略初始化过程
// 接收端
rpc-subscribe(cmd, [](const String msg) - String {assert(msg hello);return world;
});// 发送端
rpc-cmd(cmd)-msg(String(hello))-rsp([](const String rsp) {assert(rsp world);})-call();详细的初始化流程和单元测试见RpcTest.cpp
Design
类说明
外部接口
Connection 提供收发实现Rpc 提供注册消息和创建请求的方法Request 提供消息请求的各种方法Message 消息自定义序列化/反序列化规则Dispose 通过RAII的方式 用于自动取消Request
内部实现
MsgWrapper 包装Message 用于内部传输解析MsgDispatcher 解析MsgWrapper 分发消息Coder MsgWrapper序列化实现
Plugin JsonMsg.hpp 支持直接使用nlohmann/json支持的类型作为消息传输 (需满足nlohmann/json中的to_json/from_json规则 FlatbuffersMsg.hpp 支持直接使用Flatbuffers生成的类型作为消息传输(flatc需添加参数--gen-object-api)
Links
基于asio的实现 asio_net适用于ESP32/ESP8266的实现 esp_rpc