Rust Web框架(服务器端、数据库端)现状
我发现最常被提及的两个框架是:Rocket 和 Actix-web。
Rocket和Actix-web 的用户体验似乎不错,而且框架也更完善,但 Rocket 目前使用的是 Nightly 版本,尚未支持异步功能,而 Actix-web 的维护者最近也发生了变化。Warp和Tide也备受瞩目。Hyper
(以及即将推出的async -h1)在底层进行性能优化,分别是 Warp 和 Tide 的基础。 (更多信息请访问:lib.rs/server)
Tokio、Actix 和 async-std 为框架引入了异步功能。Tokio 久经考验,Actix 功能强大但仅用于 Actix-web,而 async-std 则是 Tokio 的最终演进版本。
(更多信息请访问:lib.rs/async)
对于数据库接口而言,Diesel ORM 是最完整、最流行的解决方案。SQLx则力求成为最完美、最符合 Rust 风格的解决方案(异步、纯 Rust、支持大多数数据库管理系统、编译时检查)。
(更多信息请访问:lib.rs/db)
综合考虑稳定性、性能、功能和学习曲线,哪款产品最佳?
目前有哪些值得采用的产品?为什么(或不值得)采用?
它们是否仅适用于小众项目?有哪些应用场景?
感谢 robertorojasr 的重大贡献!
要点总结
服务器
Actix-web 是目前最好的完整框架。它拥有长期支持版本 (LTS)、活跃的社区、卓越的性能以及完善的垂直集成。然而,Rocket (v0.5)、Warp 和 Tide 很快就会对其构成挑战。
数据库接口
如果你喜欢使用 ORM 解决方案,Diesel 已经准备就绪。否则,根据你的数据库和你的胆量,你可能需要等待/直接使用 SQLx,或者尝试众多特定于数据库管理系统的选项之一。
全面的
市面上已经有一些现成的、功能全面的 Rust 解决方案。对于至少具备一定 Rust 和后端开发经验的开发者来说,现在就可以构建一个速度快、轻量级、简单的服务器,并且能够实现有限但有意义的功能粒度。对于经验较少的开发者(比如我自己),Actix 是最合适的完整解决方案,而 Hyper 则适合构建非常轻量级的简单方案。但除此之外,你可能会遇到文档不足、支持迁移以及缺乏面向简洁的功能和抽象等问题。
我会尽量在讨论进行期间保持更新。如果您发现任何不实或错误之处,或者想对帖子做出补充,请告知我。
文章来源:https://dev.to/readredready/state-of-rust-web-frameworks-server-3g42