Rust Web 框架 Rocket 发布 v0.5:支持异步、SSE、WebSockets 等
历经四年多,四个 RC 版本、一千次 commit、一千多个 issue、讨论和 PR 之后,Rocket v0.5 正式发布了。
Rocket 是支持异步的后端Rust Web框架,专注于可用性、安全性、可扩展性和性能。它使编写安全的Web应用程序变得简单,而不会牺牲生产力或性能。
Rocket v0.5部分重要新功能包括:
-
支持稳定的Rust编译器:Rocket v0.5基于Rust稳定版本进行编译和构建,开发者现在可以使用稳定发布通道中的
rustc
编译和构建 Rocket 应用程序,不再需要使用#![feature(..)]
crate 属性。
#[macro_use] extern crate rocket; #[get("/<name>/<age>")] fn hello(name: &str, age: u8) -> String { format!("Hello, {} year old named {}!", age, name) } #[launch] fn rocket() -> _ { rocket::build().mount("/hello", routes![hello]) }
-
支持异步I/O:Rocket v0.5重新构建了核心请求处理部分,利用了Rust中最新的异步网络功能。Rocket现在可以自动在机器上的所有可用核心上多路复用请求处理,使路由处理程序可以声明为异步并使用await语法。
use rocket::tokio; use rocket::data::{Data, ToByteUnit}; #[post("/debug", data = "<data>")] async fn debug(data: Data<'_>) -> std::io::Result<()> { // Stream at most 512KiB all of the body data to stdout. data.open(512.kibibytes()) .stream_to(tokio::io::stdout()) .await?; Ok(()) }
-
支持Sentinels:Rocket v0.5引入了Sentinels,这是Rocket框架独有的功能。Sentinels提供了一种自动的最后防线,可以在出现无效条件时中止应用程序的启动。Sentinels可以在Rocket之外实现,并且应该尽可能地使用它们。
use rocket::{Rocket, Ignite, Sentinel}; impl Sentinel for MyResponder { fn abort(r: &Rocket<Ignite>) -> bool { r.state::<T>().is_none() || !r.catchers().any(|c| c.code == Some(400)) } }
-
支持流和SSE:Rocket v0.5引入了实时的、类型化的异步流。Rocket的新异步流部分包含了更多详细信息,我们鼓励所有感兴趣的人查看新的实时、多房间聊天示例。
-
支持WebSockets:Rocket v0.5通过新的升级API引入了对HTTP连接升级的支持。这个API允许响应器在现有的HTTP连接中控制与客户端的原始I/O,从而允许将HTTP连接升级到任何协议,包括WebSockets。
-
全面的表单功能支持:Rocket v0.5完全改进了表单支持,支持多部分上传、任意嵌套的集合、即时验证等。Rocket的新表单协议允许应用程序表达任何结构,任意嵌套和集合,无需任何自定义代码。
除了上述功能之外,Rocket v0.5还引入了其他40多个新功能和重大改进,包括安全和隐私头、优雅的关闭、灵活的配置系统、类型系统强制的数据限制等。
Rocket v0.5的发布是一个重要的里程碑,为Rust开发者提供了一个强大而易用的Web框架。我们鼓励所有用户升级到Rocket v0.5,并查看完整的CHANGELOG以了解所有新功能和改进。
请注意,Rocket v0.4仍然会得到支持和安全更新,直到Rocket v0.6发布为止。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Git 2.43 值得关注的新特性
Git发布了最新版本 2.43,新增了许多改进和新功能。 以下是Git 2.43的部分亮点: git repack的新功能:在Git 2.43中,git repack学会了一些新技巧。git repack用于重新组织仓库中的pack文件。在这个版本中,git repack支持使用多个cruft pack,并且可以通过对象过滤器将仓库的内容拆分为多个部分。 多cruft pack:在过去,Git将无法访问的对象存储在单个cruft pack中。但是,这样做会导致在每次重新打包操作时都需要重写整个cruft pack,从而浪费大量的I/O时间。在Git 2.43中,引入了对多个cruft pack的本地支持,可以将无法访问的对象拆分为多个pack,从而提高性能。 使用对象过滤器拆分仓库:Git的“partial clone”机制允许在包含有限对象子集的仓库中进行交互。在Git 2.43中,git repack学会了使用对象过滤器规范重新打包仓库,并可以选择将过滤后的对象移动到其他位置。这使得可以根据需要轻松地过滤和移除不需要的对象。 针对revert多次回滚的改进:在过去的Git版本中,当...
- 下一篇
每日一博 | 如何做好架构设计,架构设计有章可循吗?
设计一个系统的过程,就是建造一座大厦的过程,架构设计的质量直接决定了大厦的质量。 在我们进行系统的架构设计时,总是会遇到一系列的问题,比如一个大型系统的架构应该如何起步,从哪里开始设计?系统是否应该划分成多个模块,应该怎么划分模块才更加的合理?亦或是觉得产品提出的需求非常不合理,完全影响我们正常的架构设计!对于非功能性的需求,我们是否可以得过且过,不去重视? 这些问题,让我们在刚开始架构设计时手足无措,但是随着我们完成一个又一个的系统架构设计以后,发现架构设计是有章法可循的,只要我们学习这些章法和套路,并且在工作过程中不断的积累与沉淀,就会行成一个完整的架构设计方法论,面对新的大型系统架构设计,也会一步一步有节奏进行,最终完成整体的架构设计。 架构设计的原则 架构设计需要遵循一些原则: 1、架构设计需要方法体系 架构设计并不是一个”单一的方法“,直接拿来进行架构设计,而是多个各具特色的方法,组成的“方法体系”,并且这个体系随着新技术的发展还会不断进化。 2、架构设计是质疑驱动 架构设计是质疑驱动的过程,在”需求驱动“的基础上,我们需要不断的质疑我们架构设计的中间成果,进一步通过“质疑”...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2全家桶,快速入门学习开发网站教程
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- 2048小游戏-低调大师作品
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS关闭SELinux安全模块