Rust web 框架比较

Rust 程序设计语言开发的 Web 框架,大致实现、功能、特性如下——

Table of Contents

Server frameworks

There are several interesting frameworks to build web applications with Rust:

If you need a more low level control you can choose between these libraries:

Outdated server frameworks

Client frameworks

To build web clients with Rust, you can choose between these libraries:

Outdated client frameworks

Frontend frameworks (WASM)

Since WASM support is available in most browsers we can use Rust to build web applications :)

Outdated frontend frameworks

Supplemental libraries

Websocket

Templating

Comparison

High-Level Server Frameworks

Namerocketwarpironactix-webgothamThrustertide
LicenseRocket licensewarp licenseIron licenseActix-web licenseGotham licenseThruster licenseTide license
VersionRocket versionwarp versionIron versionActix-web versionGotham versionThruster versionTide version
Github StarsRocket starswarp starsIron starsActix-web starsGotham starsThruster starsTide stars
ContributorsRocket contributorswarp contributorsIron contributorsActix-web contributorsGotham contributorsThruster contributorsTide contributors
ActivityRocket activitywarp activityIron activityActix-web activityGotham activityThruster activityTide activity
Base frameworkhyperhyperhypertokiohypertokio (or hyper)async-std
HTTPS supportyesyesyesyes
HTTP/2 supportyes?yesnoyes
Asyncnoyesyesyesyesyes
Stable Rustnoyesyesyesyes

Low-Level Frameworks

Namehyperh2tiny-http
LicenseHyper licenseH2 licenseTiny-http license
VersionHyper versionH2 versionTiny-http version
Github StarsHyper starsH2 starsTiny-http stars
ContributorsHyper contributorsH2 contributorsTiny-http contributors
ActivityHyper activityH2 activityTiny-http activity
Serveryesyesyes
Clientyesyes?
HTTPS supportyesnoyes
HTTP/2 supportsolicityes?
Asyncyesyes

Frontend Frameworks

Nameyewpercydodrioseedsaurondracosquarksmithydominatormogwai
LicenseYew licensePercy licenseDodrio licenseSeed licensesauron licenseDraco licenseSquark licenseSmithy licenseDominator licenseMogwai license
VersionYew versionPercy versionDodrio versionSeed versionsauron versionDraco versionSquark versionSmithy versionDominator versionMogwai version
Github StarsYew starsPercy starsDodrio starsSeed starssauron starsDraco starsSquark starsSmithy starsDominator starsMogwai stars
ContributorsYew contributorsPercy contributorsDodrio contributorsSeed contributorssauron contributorsDraco contributorsSquark contributorsSmithy contributorsDominator contributorsMogwai contributors
ActivityYew activityPercy activityDodrio activitySeed activitysauron activityDraco activitySquark activitySmithy activityDominator activityMogwai activity
Stable Rustyesno?yes?yesnononono
Virtual DOMyesyesyesyes?yesyesyesnono

Middleware & Plugins

Nameirongothamnickelrouilleactix-webThruster
Static File Servingyesno^yesn/ayesyes
Mountingyesyesyesn/ayesno
Loggingyesyesnon/ayesyes
JSON-Body-Parsingyesyesyesn/ayesyes (via Serde)
Sessionsyesyes?n/ayesyes
Cookiesyesyes?n/ayesyes
PostgreSQL middleware?no^yesn/ayes
SQLite middleware?no^yesn/ayes
Redis middleware?no^yesn/ayes
MySQL middleware?no^yesn/ayes

(^ Planned in current roadmap)

Websocket Libraries

Namewebsocketws-rstwisttungsteniteactix-web
LicenseWebsocket licenseWs-rs licenseTwist licenseTungstenite licenseActix-web license
VersionWebsocket versionWs-rs versionTwist versionTungstenite versionActix-web version
Github StarsWebsocket starsWs-rs starsTwist starsTungstenite starsActix-web stars
ContributorsWebsocket contributorsWs-rs contributorsTwist contributorsTungstenite contributorsActix-web contributors
ActivityWebsocket activityWs-rs activityTwist activityTungstenite activityActix-web activity
Serveryesyesyesyesyes
Clientyesyesyesyesyes
Base framework- / tokiomiotokio- / tokiotokio
Asyncno / yesyesyesno / yesyes

Resources

Blog posts

2018

Until 2017

Demos

Real-world web projects using Rust

JS & asm.js & WASM

Examples

Benchmark