科技一哥|Web框架,2020如何选择Rust
Rust是目前最优雅而且热门的编程语言之一 , 性能上可以比肩C、编译时安全、没有GC的累赘、异步和范型支持 , 注定这是将来流行的语言 。 一般认为Rust是一个很好的系统语言 , 但实际上Rust在各个领域都做的不错 , 今天我们就来说说Rust的Web框架 。
文章图片
概述
截至2020年7月 , Rust生态系统中的主要Web框架有:actix-web、rocket、tide和warp 。 那么问题来了:如果要用Rust构建一个生产环境用的API , 应该选择哪框架呢?
本文我们就来解答这个问题 , 我们将从几个方面对上述的各个框架予以说明:包括全面性(功能全面)、社区与采纳度、同步和异步(及其选择的future运行时)、文档教程和示例以及API和人机工程学 。
当然虫虫历来奉行这样的理念那就是没有绝对的选择:不同的环境(和个人好恶)可能会导致选择不同的架构 。
全面性
actix-web , tide和warp都是廋web框架:他们只提供基本的HTTPWeb服务器 , 路由逻辑 , 中间件基础设施 , 基本的构建模块和抽象 , 从而解析、操作和响应HTTP请求 。
rocket框架则与他们相反:它旨在一栈撸 , 对最常见的需求都可以通过rocket中的组件来提供 , 随要随取 , 开箱即用 。 另外它也提供了扩展机制 , 开发人员可以使用hook扩展用例 。
rocket发内置了和ORM集成 , 可以管理和配置流行数据库(例如Postgres , Redis , Memcache等) 。
文章图片
与其他语言的Web框架进来对比的话:
actix-web , tide和warp更像是Python语言的Flask或JS中的ExpressJavascript但是没有提供现成的配置管理系统或ORM集成 。 需要有开发者手动自定义构建API , 并需要引入所需的功能库 , 自己处理图片样式等;
rocket则更接近于Python的Django或PHP的Symphony框架:拥有一个稳定而强大的核心 , 附带一组高质量组件 , 可满足构建坚固的Web应用程序时的日常需求 。 rocket要在宽度和范围上与同行匹敌 , 还有很长的路要走 , 但这绝对是一个良好的开端 。
当然 , 这是截止目前各框架的情况 , 各个框架可能也会不断地调整改善 。 比如actix-web已经在慢慢积累更多的功能(从安全到会话管理) , 在GitHub下actix组织的actix-extras仓库收集了相关的生态体系 。
文章图片
另外需要说明的是 , 用廋Web框架开发 , 也并非就是从零开始要自己动手构建所有内容 , 毕竟有社区的生态体系 , 我们需要弄的也是别人需要的 , 很多已经前人帮我都做好了 , 我们无需重复造轮子 , 只需''拿来''用就好了 。
社区与采纳度
针对四个web框架 , 我们浏览Rustcrates库中的统计数字如下:
构架总下载量日下载量
actix-web1250k3000
rocket525k1000
warp435k3000
tide47k300
由于各个框架出现的早晚有别 , 总下载量不能客观反映框架的流行程度 , 但是日下载量可以很好地衡量一个框架的目前的流行程度 。 我们考虑社区规模和流行程度主要考虑以下因素:
具有规模应用的框架 , 有更多人帮我们趟过它的坑 , 所以其稳定性也会更好 。
规模越 , 该框架的支持crates的数量也越多;
框架用的人多 , 其使用教程 , 问题解决方案和使用经验也会越多 , 遇到问题更容易得到解决 。
对廋框架来说 , 支持crates数量也是框架可实用的关键 。 我搜索框架名称时查看在crates.io的搜索结果数 , 可以反应各个框架的社区规模的影响:
构架搜索结果
rocket178
- 小红猪带你看科技|七夕节送女朋友必备左点小艾智能艾灸器X8,3天众筹500万
- 浪浪科技精选|超频三GI-CX240 ARGB水冷,极致性能冷酷到底
- ITheat热点科技|可搭载高规格显卡,AMD将发布新移动端处理器:开放完整PCIe通道
- 爱因儿科技|入侵盖茨、马斯克、巴菲特等名人推特账号的黑客被抓了!最小的17岁
- 小米科技|小米正式官宣以旧换新,支持小米10系列等5款机型,你等到了吗?
- 小米科技|数亿米粉始料未及!小米2日正式宣布,网友:太良心了!
- 科技数码迷|刘作虎终于拿起了屠刀,一加氢OS彻底与过去说再见
- 一点科技范|你更pick谁?,下半年最受期待的三大系列手机
- 科技章鱼烧|更换硬盘只需动动小手,装载系统和软件交给DiscWizard
- 科技小蠕虫|又一国家绕开华为,3大运营商核心网络不用华为,美国“围剿”下