#async-std #rpc #rpc-server #async #rpc-client #server-framework #tokio

toy-rpc

一个异步 RPC,模仿 golang net/rpc 的使用,并支持 async-std 和 tokio

52 个版本

0.10.0 2024 年 4 月 19 日
0.9.0-beta.12022 年 8 月 18 日
0.9.0-alpha.22021 年 11 月 24 日
0.8.6 2022 年 7 月 19 日
0.3.1 2020 年 11 月 27 日

#1172网络编程

Download history 204/week @ 2024-04-29 160/week @ 2024-05-06 79/week @ 2024-05-13 108/week @ 2024-05-20 96/week @ 2024-05-27 107/week @ 2024-06-03 137/week @ 2024-06-10 99/week @ 2024-06-17 82/week @ 2024-06-24 446/week @ 2024-07-01 246/week @ 2024-07-08 211/week @ 2024-07-15 273/week @ 2024-07-22 556/week @ 2024-07-29 166/week @ 2024-08-05 129/week @ 2024-08-12

1,161 每月下载量

MIT/Apache

305KB
6.5K SLoC

toy-rpc

一个异步 RPC 库,模仿 golang 的 net/rpc 包,并支持 async-std 和 tokio。

此项目仍在积极开发中。我的功能想法已经有点用尽了,所以如果您想要某个功能,请随时告诉我。

toy-rpc 旨在成为一个易于使用的异步 RPC 工具,灵感来源于 golang 的 net/rpc API。它支持 TCP 或 TLS 上的 async_stdtokio 运行时。提供了与常见 HTTP 服务器框架(如 actix_webwarptide)的集成。

总体使用和 API 应该与 golang 的 net/rpc 包类似。一些名称已更改,使其听起来更“rusty”。因为 Rust 不自带运行时反射,所以使用属性宏 #[export_impl]#[export_trait] / #[export_trait_impl],以及属性 #[export_method] 来标记函数在 golang 的 net/rpc 视角下为“导出”。

toy-rpc的一些其他功能

  • 级联取消:每当一个未完成的Call<Res>被丢弃时,会向服务器发送取消请求,从而传播取消。

更详细的用法可以在书籍和文档中找到。

此crate使用#![forbid(unsafe_code)]来确保crate中没有使用unsafe

功能标志

功能标志可以分为三类。

运行时和HTTP框架集成的选择

  • async_std_runtime:支持与async-std一起使用
  • tokio_runtime:支持与tokio一起使用
  • http_tide:在服务器端启用tide集成。这还启用了async_std_runtimews_async_std
  • http_actix_web:在服务器端启用actix-web集成。这还启用了tokio_runtimews_tokio
  • http_warp:在服务器端启用与warp的集成。这还启用了tokio_runtimews_tokio
  • http_axum:在服务器端启用与axum的集成。这还启用了tokio_runtimews_tokio

选择RPC服务器或客户端(两者可以同时启用)

  • server:启用RPC服务器
  • client:启用RPC客户端

选择序列化/反序列化(每次只能启用一个)

  • serde_bincode:(默认)默认编解码器将使用bincode进行序列化/反序列化
  • serde_json:默认编解码器将使用serde_json进行json序列化/反序列化
  • serde_cbor:默认编解码器将使用serde_cbor进行序列化/反序列化
  • serde_rmp:默认编解码器将使用rmp-serde进行序列化/反序列化

WebSocket支持(HTTP集成通过WebSocket实现)

  • ws_tokio:启用与tokio的WebSocket和HTTP集成。客户端使用dial_httpdial_websocket时必须启用。
  • ws_async_std:启用与async-std的WebSocket和HTTP集成。客户端使用dial_httpdial_websocket时必须启用。

TLS支持

  • tls:启用TLS支持

以下列出了一些其他功能标志,它们可能对您没有实际用途。

  • 文档
  • stdserde/std。目前没有实际用途。

默认情况下,只启用了 serde_bincode 功能。您必须至少启用一个运行时功能标志,以及 server 和/或 client 才能使用。

默认功能

default = ["serde_bincode"]

集成

actix-webtidewarp 提供了 HTTP 集成。更多详细信息请参阅书籍/集成示例

快速入门示例

书籍/快速入门中提供了一个使用 tokio 运行时的快速入门示例。

许可证:MIT/Apache-2.0

依赖关系

~3–21MB
~306K SLoC