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 网络编程
每月353次下载
在ecksport-rpc中使用
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-tls
和rustls
,以便我们可以使用TlsDomain
身份类型。 - 清理crate导出。
- 让
ecksd
真正做它所说的。 - 可能需要一个阻塞的同步接口?
lib.rs
:
RPC编解码器类型。
依赖关系
~0.3–1.3MB
~28K SLoC