科技一哥|Web框架,2020如何选择Rust( 二 )
actix-web113
warp57
tide20
尽管搜索结果中的这些crates并非都会与搜索的框架相关 , 他们中也有一些可能是过时或者无法使用的 。 但是这个结果确实能反应一个框架的了流行程度和实用操作性 。 比如:
如果需要将Prometheus的指标添加到的API中 , 则可以使用actix-web-prom或rocket-prometheus在几分钟之内手动搞定 , 两者都有数千次下载量 。 如果你选择warp或tide框架 , 则这些工作都需要自己开始编写和集成;
如果要添加分布式跟踪 , 则可以使用actix-web-opentelemetry 。 如果选择任何其他框架 , 则需要自己手动实现 。
同步与异步
Rust1.39版本(2019-11-07)中引入了async/await语法 , 改变了Rust异步编程的体验 。 当然Rust生态系统追赶并采用async/await异步还需要一些时间 , 但是可以公平地说 , 处理IO受限工作负载的brates现在都是是异步优先的(例如reqwest) 。 那么Web框架方面的情况呢?
actix-web和warp在0.2.x中开始支持async/await , 而tide中async/await支持基于其nightlyrust编译器 。
rocket , 仍然会公开一个同步接口 。 async/await支持预计将在其0.5发行版中提供 , 目前尚不支持异步编程 。
如果要实现一个对性能严格要求的 , 大流量web应用程序 , 则最好选择异步Web框架 。
如果不是上面这种情况 , 那么尽管缺少异步支持 , 选择rocket也应该不是啥问题 。
future运行时
Rust的异步编程是建立在其Futuretrait之上的:Future公开了poll一种必须调用的方法 , 以允许Future同步更新 。 可以将Rust的futur视为惰性的:除非进行poll , 否则无法保证它们会执行完毕 。 与其他语言所采用的推模型相比 ,
异步运行时实际上是项目的依赖项 , 以brates形式引入 , 这为我们提供了极大的灵活性:确实可以实现自己的运行时 , 以针对用例的特定要求进行优化或者仅根据情况选择最合适的运行时 。
从表面上看 , 听起来很棒 , 但现实却很痛苦:目前 , 运行时之间的互操作性还很差 。 混合运行时可能会很痛苦 , 通常会导致无法分流、检测或解决的问题不直接 。
尽管大多数库不应直接依赖于运行时 , 而应依赖futures库公开的接口 , 但由于历史包(例如tokio , 长期以来是生态系统中唯一可用的运行时) , 实际需要(例如 , 一个框架必须能够产生任务)或缺乏标准化 。
因此 , 选择一个异步Web框架超出了框架本身的范围:正在选择一个由brates组成的生态系统 , 这突然使依赖于不同异步运行时的库变得更加麻烦 。
当前的事务状态还很不理想 , 但是如果从现在开始要编写异步Rust , 那么建议在异步运行时进行做慎重的选择 。
目前在Rust中可用的两个主要通用异步运行时为tokio和async-std 。
tokio已经存在了很长一段时间 , 并且已经广泛用于生产中 。 尽管这会导致更大 , 更复杂的API , 但是它是相当可调的 。
async-std是一年前发布的 , 和async/await稳定发布时间差不多 。 它提供了出色的人性化设计 , 同时为配置扩展留下了更少的空间 。
crates搜索中 , 两者的统计数据如下:准:
运行时下载总量日下载量
tokio9600k30k
async-std600k4千
四个web框架的对两者的选择如下:
构架运行时
actix-webtokio
rocket(0.5.x)tokio
tideasync-std
warptokio
文档 , 教程和示例
必须深入源代码以了解某项工作原理是一件很意义的事情 , 但只应该一种选择 , 而不是必须的 。 在大多数情况下 , 要依靠记录良好的框架 , 包括有关使用模式的简单示例 。
良好的文档 , 教程和功能齐全的示例对任务至关重要 , 特别是团队中一个或多个成员都不是经验丰富的Rust开发人员的时候 。
推荐阅读
- 小红猪带你看科技|七夕节送女朋友必备左点小艾智能艾灸器X8,3天众筹500万
- 浪浪科技精选|超频三GI-CX240 ARGB水冷,极致性能冷酷到底
- ITheat热点科技|可搭载高规格显卡,AMD将发布新移动端处理器:开放完整PCIe通道
- 爱因儿科技|入侵盖茨、马斯克、巴菲特等名人推特账号的黑客被抓了!最小的17岁
- 小米科技|小米正式官宣以旧换新,支持小米10系列等5款机型,你等到了吗?
- 小米科技|数亿米粉始料未及!小米2日正式宣布,网友:太良心了!
- 科技数码迷|刘作虎终于拿起了屠刀,一加氢OS彻底与过去说再见
- 一点科技范|你更pick谁?,下半年最受期待的三大系列手机
- 科技章鱼烧|更换硬盘只需动动小手,装载系统和软件交给DiscWizard
- 科技小蠕虫|又一国家绕开华为,3大运营商核心网络不用华为,美国“围剿”下
