#rpc #protocols #ecksport #encoding #codec #type #structure

ecksport-codec

Ecksport RPC库中定义类型编码的实用工具

6个版本

新版本 0.3.3 2024年8月22日
0.3.2 2024年8月21日
0.2.0 2024年8月9日
0.1.1 2024年8月1日

#1372 in 网络编程

Download history 118/week @ 2024-07-31 117/week @ 2024-08-07 118/week @ 2024-08-14

每月353次下载
ecksport-rpc中使用

MIT授权

18KB
439

Ecksport

传输 -> xport -> ecksport

Ecksport是对低开销多用途传输协议的又一次迭代。

这是我尝试的这类想法的第三次迭代,所以希望这次能做对。在它变得普遍可用之前,还有很多工作要做。

设计目标

Ecksport对其设计有一定的看法,但对使用案例没有看法。核心协议是一系列帧的传输,我们通过这些帧构建一个通道范式来多路复用独立的流。每个通道在“主题”的上下文中打开,默认是双向的。连接的每一方都必须确认通道的关闭,才能完全关闭它。

在此基础上,我们可以构建一些原语,并在不同的主题上并行使用它们

  • RPC调用/响应模式
  • 订阅
  • 消息接收器

安全性

底层协议不假设加密系统,但我们有一些特殊消息用于实现认证。Ecksport可以通过TLS(或任何可以传输其帧的协议)使用,并继承其安全性。您也可以在Noise会话中使用它,将Ecksport帧适当地放入Noise帧1:1。目标是支持通过WebSockets传输帧,以便在Wasm环境中使用。

详细信息

我们在内部使用Borsh进行一些编码,但我们打算将其限制在有限的范围内。完整的协议规范待定。

用途

Ecksport打算在Aspect消息协议中使用,作为典型的客户端-服务器和服务器-服务器传输协议。提交一个PR来添加使用它的应用程序!

项目结构

  • ecksport-auth - 使用基于NaCl签名密钥系统的本地认证实现
  • ecksport-codec - 用于RPC服务器的可序列化类型的Trait定义
  • ecksport-core - 定义帧类型、特性、主题、错误代码等
  • ecksport-net - 连接抽象、通道句柄等
  • ecksport-rpc - RPC协议定义
  • ecksd - 将RPC调用分发到子进程等的服务器 [wip]
  • eckscat - 类似netcat的命令行工具 [wip]

已知问题

  • 在流帧格式中使用了糟糕的Borsh。这将在不久的将来得到修复,并替换为真正的良好编码,同时还有一些辅助工具来帮助编写帧。
  • 许多缓冲参数不可配置,这将予以公开。
  • 特性标记不足,你可能希望构建所有Tokio功能。
  • 没有第一方TLS帧器。

待办事项

  • 修复Borsh问题。
  • 支持作为新方法使用在ClientBuilder上的native-tlsrustls,以便我们可以使用TlsDomain身份类型。
  • 清理crate导出。
  • ecksd真正做它所说的。
  • 可能需要一个阻塞的同步接口?

lib.rs:

RPC编解码器类型。

依赖关系

~0.3–1.3MB
~28K SLoC