前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >两张图展示当前 Rust Web 生态

两张图展示当前 Rust Web 生态

作者头像
张汉东
发布2021-09-02 11:11:54
1.8K0
发布2021-09-02 11:11:54
举报
文章被收录于专栏:Rust 编程Rust 编程

今天画了两张图,来展示一下当前 Rust Web 生态。

tokio 生态

由图可见,tokio 生态目前在网络服务和Web 开发方面基本的核心组件都已齐全。尤其是随着 Axum 框架的推出,tokio 在 Web 生态已接近完备。

关于 Axum 框架正好我这里有一次视频分享(点击观看):

RustFriday 飞书群线上沙龙 第十七期 | Axum异步Web框架

  1. Axum 的中间件是直接使用 tower 的抽象,这样的好处就是:
    • 使用了统一 的 Service 和 Layer 抽象标准,方便大家来繁荣生态
    • 复用 tokio / hyper/ tonic 生态
  2. axum 的路由机制并没有使用像 rocket那样的属性宏,而是提供了简单的 DSL (链式调用)。路由是基于迭代和正则表达式来匹配的,路由性能目测应该和 actix-web 差不多。
  3. 也提供了方便的 提取器 ,只要实现 FromRequest 就是一个提取器,实现起来也非常方便。
  4. 其他琐碎,见视频。

总之,一句话,Axum 在我看来,是 Rust 在 Web 开发领域的一个里程碑,它强势带动了 tokio/tower 生态。虽然现在还不太成熟,但潜力很大。

其他 Web 框架

actix-web 自己加了一层runtime将线程作为Actor来管理多个线程,每个线程实际跑的都是tokio的单线程block_on,这样线程之间就没法任务窃取了,失去了tokio任务调度的优势,换取了无线程上下文切换的性能。这是actix-web和其他框架的主要区别。Axum则是完全利用tokio。actix-web 的中间件也借鉴了 Tower Service,但它并不像 tower 那么通用。

rocket 的优势在于完善的 API,尤其是处理表单非常完善。中间件不同于其他框架,为了达到安全和正确的目标,rocket对中间件有了较强的约束,并不能像 Axum 那样自由地实现中间件。这也注定它形成生态比较难。rocket目前并不看重性能,也许在未来1.0之后会进行性能优化。

如何选择你自己的web框架,结合你的场景和喜好来选择吧。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-08-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 觉学社 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • tokio 生态
  • 其他 Web 框架
相关产品与服务
消息队列 TDMQ
消息队列 TDMQ (Tencent Distributed Message Queue)是腾讯基于 Apache Pulsar 自研的一个云原生消息中间件系列,其中包含兼容Pulsar、RabbitMQ、RocketMQ 等协议的消息队列子产品,得益于其底层计算与存储分离的架构,TDMQ 具备良好的弹性伸缩以及故障恢复能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档