< 返回版块

photino 发表于 2023-05-09 15:55

Tags:web,http,orm

最新发布的zino 0.8版本实现了与actix-web框架的集成。至此,Zino同时支持了Rust社区中最流行的两个Web框架:axumactix-web

Zino框架通过应用接口抽象,可以允许你在actix-webaxum中自由切换并且尽可能少地改动代码。在应用示例actix-appaxum-app中,只有routermiddleware两个模块需要改动,所有其它的模块(controllerserviceschedule等)都不需要任何改动,包括main.rs也完全相同:

mod controller;
mod middleware;
mod router;
mod schedule;
mod service;

use zino::Application;

fn main() {
    zino::Cluster::boot()
        .register(router::routes())
        .spawn(schedule::jobs())
        .run(schedule::async_jobs())
}

对于使用者来讲,并不需要关心这种接口的差异,只需要专注于把业务代码写好。我们的Zino开发框架帮你解决到底是用actix-web还是axum的艰难抉择!


Ext Link: https://docs.rs/zino

评论区

写评论
作者 photino 2023-05-15 15:36

你这是要实现消息推送吗 可以试试axum::response::sse

--
👇
Poordeveloper: 借问一下axum的stream response有点慢(相对nodejs),感觉有缓存不是立即推送,有没有解?

Poordeveloper 2023-05-15 11:16

借问一下axum的stream response有点慢(相对nodejs),感觉有缓存不是立即推送,有没有解?

作者 photino 2023-05-12 12:15

自由讨论

也不是说zino就只支持从axum切换到actix,即使你只用axum,当axum有大版本升级的时候(比如即将推出的0.7),一样有很多不兼容的改动,这种变更完全可以在zino框架层面解决

文档没准备好 这是指中文教程吧(也在加紧撰写中) docs.rs上的API文档还是全的

当然,就Zino框架目前而言,还没有到功能完善的地步(预计要等async fn in trait在Rust 1.74中稳定之后)现阶段的推广更多地是寻找开发者共同参与,以及提供功能需要和改进建议,并没有推荐在生产环境使用

--
👇
Nayaka: 泼点凉水吧,非杠

就算是只用过axum的新手,换成actix其实也不难,毕竟rust本身门槛在那 既然要推一个东西真的得把文档先准备好,即使不是production ready,现在这样直接劝退 看了下issue,感觉基础设施还没完善 不然你说的极端情况里,别人更原意将Zino代入

Nayaka 2023-05-12 11:24

泼点凉水吧,非杠

就算是只用过axum的新手,换成actix其实也不难,毕竟rust本身门槛在那 既然要推一个东西真的得把文档先准备好,即使不是production ready,现在这样直接劝退 看了下issue,感觉基础设施还没完善 不然你说的极端情况里,别人更原意将Zino代入

--
👇
photino: 主要目的是在更高的抽象层面来写业务代码,避免过于依赖一个固定的Web框架。假定一个团队的项目是用actix-web写的,招的新手只用过axum,那如果是用Zino框架,这对于新手来说实际上是没啥差别的。再极端一点,假如某一天actix-web不再维护了,在Zino框架下很容易就能切换到axum。或者以后有更好的Web框架了,也一样能集成到Zino框架下

--
👇
Ryan-Git: 为啥要在 actix-web 与 axum 中自由切换? 用了 zino 还是一样要选啊。。。

作者 photino 2023-05-11 21:31

当然,也可以选择不用Zino,可以借鉴它的代码组织方式。但是,无论是直接用axum还是actix-web,最终组织出来的代码多少还是和Zino有点像的。一定程度上而言,Zino框架更像是一种实用性的规范

--
👇
zylthinking: 然而新手开始学习 Zino 了, 这是件更糟的事情 -- 为了避免学习采用更多的库, 学了一个采用更少的

--
👇
photino: 主要目的是在更高的抽象层面来写业务代码,避免过于依赖一个固定的Web框架。假定一个团队的项目是用actix-web写的,招的新手只用过axum,那如果是用Zino框架,这对于新手来说实际上是没啥差别的。再极端一点,假如某一天actix-web不再维护了,在Zino框架下很容易就能切换到axum。或者以后有更好的Web框架了,也一样能集成到Zino框架下

--
👇
Ryan-Git: 为啥要在 actix-web 与 axum 中自由切换? 用了 zino 还是一样要选啊。。。

zylthinking 2023-05-11 12:28

然而新手开始学习 Zino 了, 这是件更糟的事情 -- 为了避免学习采用更多的库, 学了一个采用更少的

--
👇
photino: 主要目的是在更高的抽象层面来写业务代码,避免过于依赖一个固定的Web框架。假定一个团队的项目是用actix-web写的,招的新手只用过axum,那如果是用Zino框架,这对于新手来说实际上是没啥差别的。再极端一点,假如某一天actix-web不再维护了,在Zino框架下很容易就能切换到axum。或者以后有更好的Web框架了,也一样能集成到Zino框架下

--
👇
Ryan-Git: 为啥要在 actix-web 与 axum 中自由切换? 用了 zino 还是一样要选啊。。。

作者 photino 2023-05-10 15:20

主要目的是在更高的抽象层面来写业务代码,避免过于依赖一个固定的Web框架。假定一个团队的项目是用actix-web写的,招的新手只用过axum,那如果是用Zino框架,这对于新手来说实际上是没啥差别的。再极端一点,假如某一天actix-web不再维护了,在Zino框架下很容易就能切换到axum。或者以后有更好的Web框架了,也一样能集成到Zino框架下

--
👇
Ryan-Git: 为啥要在 actix-web 与 axum 中自由切换? 用了 zino 还是一样要选啊。。。

Ryan-Git 2023-05-10 11:34

为啥要在 actix-web 与 axum 中自由切换? 用了 zino 还是一样要选啊。。。

1 共 8 条评论, 1 页