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框架:他们只提供基本的HTTP Web服务器,路由逻辑,中间件基础设施,基本的构建模块和抽象,从而解析、操作和响应HTTP请求。
rocket框架则与他们相反:它旨在一栈撸,对最常见的需求都可以通过rocket中的组件来提供,随要随取,开箱即用。另外它也提供了扩展机制,开发人员可以使用hook扩展用例。
rocket发内置了和ORM集成,可以管理和配置流行数据库(例如Postgres,Redis,Memcache等)。
与其他语言的Web框架进来对比的话:
actix-web,tide和warp更像是Python语言的Flask或JS中的Express Java