尝试多次入门后,用了以下一些框架
axum:web framwork sqlx:sqlboy
写着写着感觉用 rust 写 web 项目总感觉哪里味不对,一直在反思这 rust 写 web 应用真是适合吗?
就目前 orm 框架 sqlx 、seaorm 、diesel 都还在讨论哪个牛逼~
不像 Java ,mybatis 用起来那么爽~ 我既想要 orm 的字段映射到对象,也想要自定义查询的灵活~
1
FoxRiverMan 5 天前 ![]() 你的问题太天真了!你以为 Rust 是 Java 吗?还想要 MyBatis 式的爽快?醒醒吧! Rust 玩的是编译时安全,不是 runtime 魔法。那些 ORM 框架还在用生命值交换类型安全,用宏展开模拟动态查询,它们连 MyBatis 的脚后跟都摸不到!
别做梦了!在 Rust 里想同时拥有 ORM 的对象映射和原生 SQL 的灵活?要么跪着用 sea-orm 的 ActiveRecord 模式,要么像苦行僧一样手写 sqlx 的映射代码。你以为 diesel 的查询 DSL 很牛逼?那不过是编译器用铁链拴着你跳舞! Java 的 MyBatis 能边喝咖啡边写 XML 动态 SQL ,Rust 的 sqlx 让你跪着检查每个问号参数的类型安全!你想要的"字段映射到对象"?在 Rust 里每个结构体都要用#[derive(Debug, Clone, sqlx::FromRow)]来献祭,连枚举类型都要自己实现 Typesqlx::Postgres ! 醒醒吧!用 Rust 写 Web 就像用手术刀砍树——要么你足够疯魔把整个生态链重写一遍,要么就老实承认这玩意儿现在根本不适合快速开发 Web 应用!等你的项目被生命周期标注搞得欲仙欲死时,Java 程序员早把功能上线十次了! |
![]() |
2
springz 5 天前
sea-orm 还有一个 https://github.com/SeaQL/sea-query 用一下这个试试,看看能不能找到熟悉的体验。
web framwork 我推荐你用 salvo 也看看能不能找到熟悉的感觉。https://github.com/salvo-rs/salvo |
3
5261 OP @FoxRiverMan 同意~ 当时也是出于说想找 web3 remote 工作去了解了下 Rust ,加上自己是 Java 应用开发,所以想着用 Rust 自己搭建个项目重写一遍 Java 的需求,写到一半发现很难受
那 Go 写 web 是不是就比 Rust 更适合呢? |
![]() |
5
peteretep 5 天前 ![]() 哦我的上帝啊!
rust 要是再以 web 服务的样子出现, Springboot 会发誓用它的自动装配狠狠地把 aop 踢进 rust 的屁股! |
![]() |
7
springz 5 天前
我也不是很习惯 sea-orm ,用 sea-query 会比 sqlx 裸写 sql 好很多。
|
8
openmynet 5 天前
sea-orm 用着难受是没有结合自定义宏一起使用,sea-orm + validator + serder-aux 前端配合 ts 的 interface 不比 java 的 MyBatis 好上百倍
|
![]() |
9
344457769 5 天前
@FoxRiverMan V2EX 不允许发布 AI 生成的内容的。
|
10
FoxRiverMan 5 天前
@344457769 刚问了 Siri ,它说本消息由你的母语基因自动生成,要封建议从甲骨文开始封起
|
![]() |
11
kenshinhu 5 天前
如果不写 Web ,Rust 可以有哪些实践?
|
12
hangbale 5 天前
用 actix 写过,很痛苦,开发效率低,后面还是回到 node 了
|
13
hwdq0012 5 天前
|
![]() |
17
lancelock 5 天前
mybatis ... 爽吗?
|
![]() |
18
iyaozhen 5 天前
额 rust 写 web 还不成熟吧。大部分业务 qps 很小,牺牲效率换取性能,得不偿失
|
19
sleepm 5 天前
|
20
Wh1t3zZ 5 天前 ![]() @FoxRiverMan #1 提醒下频繁发布 AI 生成内容会被 ban
|
![]() |
23
maichael 5 天前
学新语言切忌新刀砍老瓜和拿着刀找瓜,你已经有可以砍 Web 的刀了,然后你还找一把刀来砍 Web ,然后你还希望它跟第一把刀一模一样,那干嘛不用原来那把呢?
|
![]() |
24
springz 5 天前
salvo 我感觉更像 go 生态的 gin ,用起来简单,没太多复杂概念。我一般是 salvo + sea-query 。
|
![]() |
25
XiLingHost 5 天前
rust 感觉适合用来做中间件和底层库,写应用层的东西感觉不合适
|
![]() |
26
springz 5 天前
rust 写 web 优势我个人觉得就是性能+可靠吧,糊业务现在用 js/ts 更爽。
|
![]() |
27
springz 5 天前
go 写业务也不合适啊,不照样一堆后端业务拿 go 写。
|
29
coderzhangsan 5 天前
go 火的时候做 web 应用,rust 火的时候还做 web 应用,实在搞不懂你们的脑洞,这 2 门语言的发明初衷不是为了 web 应用的吧? web 应用已经有一大堆语言了,还在上面造轮子,你们可真有精力啊。要明白一个道理,颠覆一个行业或者取代一个产品,不是简单地把轮子重新造一遍,肯定有颠覆性的创新在里面或者极致性的体验。
|
![]() |
30
springz 5 天前
啥业务能跑到 springboot 的性能问题,能到上限招人加机器不成问题。
|
31
Leviathann 5 天前
连 mybatis 都能吹上
你还是别用 rust 了 |
32
coderzhangsan 5 天前
学新语言,就一定要理解的它的设计思维,有些人总会把母语的思想代入新语言中,以母语习惯在新语言里开发和设计,如果两门语言设计思维相差很大,就会搞得不伦不类,最后母语的习惯,指责新语言蹩脚之处。
|
33
mrsecond 5 天前
@FoxRiverMan 一股 ds 味
|
34
cccssss 5 天前
@coderzhangsan 你去劝劝 tokio 的作者,别发明 axum 啊
|
35
5261 OP @Leviathann 我的错,不应该技术吹! 哥们日常用啥语言开发呢?
|
37
bjfane 5 天前
看过别人写的主机监控上报到 server 的全 rust 开源项目,自己从头理了一遍,里面还有 grpc 的东西,装在机器上的 agent 倒是合适 rust ,整体看 server 用别的语言更好,比如 go 啥的,自己写起来顺手的就行。
玩具型的 最近再看 bun 一把梭,虽然可能不适合企业级,但是一把梭就不错,还内嵌 postgre,sqlite 驱动呢 |
![]() |
39
springz 5 天前
请注意,我们在说 orm 的时候,涉及到 3 个 概念。
orm:类似 java 的 hibernate ,jpa 。php 的 Eloquent ORM ,rust 的 sea-orm ,这层讲究的是对象关系映射,把表结构映射到对象上,完全隐藏 sql 等概念。 sql-builder: 类似 java 的 mybatis ,js/ts 的 kysely 或 knex ,rust 的 sea-query ,这层讲究的是辅助更好的写 sql ,组装 sql 。并处理数据到对象的映射。并不隐藏 sql 概念,只是辅助。 sql-driver: 类似 java 的 odbc ,js/ts 的 node-pg 等,rust 的 sqlx ,这层讲究的是驱动,连接等底层,纯 sql 。 不处理映射等或者简单映射。 各有利弊,按需选择。不同层级的不要一起比较。 |
![]() |
40
springz 5 天前
我最开始工作是纯 sql 然后在我工作第 2-3 年的时候我喜欢用 sql-builder ,工作第 5 年的时候我用 orm ,工作第 8 年的时候我喜欢各种 sql-builder ,现在我几乎回到了纯 sql ,只是加一些模板工具方便写 sql 。
|
![]() |
41
springz 5 天前 ![]() web 框架说白了就是在处理 res 和 req 和它们加入中间件(要不就是过滤器模式要不洋葱圈),用多了就会感觉一个样。所有语言只要是处理 http 的都是近似设计。
不同的场景按需选择就好。不同的语言有不同的生态和利弊。 |
42
YsHaNg 5 天前 via iPhone
|
43
macwenbo 5 天前
@FoxRiverMan 有 ai 后,我感觉问题不大了。。定义好请求参数,返回结果,把 sql 一扔,一个函数 tab ,tab 就写完了。现在裸 sql ,比以前友好太多了。
|
![]() |
44
fly2never 5 天前
我一直觉得, 如果能容忍 GC, 那没必要选择 Rust. 他带来的复杂度绝大多数和内存生命周期相关.
在无 GC 的需求下, 先看看自己项目的生态和 已有的 C/C++库联系紧密不, 如果紧密就直接 C/C++吧, 不然写一大堆 unsafe 也没意思. 最后如果上述都不满足, 那就顺顺利利用 Rust, 这才是 Rust 的主战场. 比如高性能数据库开发, 高性能 WASM 等等 |
46
darkless456 5 天前
rust 试过一阵,感觉不太适合 web 开发,一些底层的东西更适合些。
|
![]() |
47
FightPig 5 天前
用 rust 写过,太麻烦了,我最后还是用 rails 一把梭了,rust 我只拿来做一些跨平台的应用时写写,本来用 go 写的,结果 win 下 360 个恶心的东西,天天报毒
|
48
ChiuLam 5 天前
hibernate 拼错的人确实多
|
![]() |
49
gujuji 5 天前
@FoxRiverMan 会说多说。。。
|
50
lcbp 4 天前
还得是 PHP 啊
|
![]() |
51
ThinkCat 4 天前
web 建议使用一下 rocket.rs ,体感上和 node go 使用方式类似,要和 java 的框架比,确实比不上,但是也没上面说的那么不堪。orm 目前看确实简陋。
|
![]() |
52
abcbuzhiming 4 天前
web 这种高度动态的玩意,天生就不适合这种需要长时间静态编译检查的语言。你看在 web 领域能占据一席之地的语言,要不就是那种“瞎写也出不了大问题”的脚本语言,要么就是“虽然我要求严格但是我编译很快”的静态语言。rust 这种改起来之前,得认真想清楚,以通过编译器的语言,确实不是回合
|
![]() |
53
ShadowPower 4 天前
用 rust 写 web 和用 C/C++写 web 的体验并没有太大的差别
|
54
5261 OP |
![]() |
55
encro 4 天前
可以的,
我就用 axum 做了一个图形处理的 web api 。 底层对接 opencv 库,上层接口用 axum 。 太稳定了用了几年了,就 16M 内存。。。 |
56
wapzjn 4 天前
如果习惯 mybatis 的话 ORM 可以尝试使用 rbatis
|
![]() |
58
Nugine0 3 天前
@FoxRiverMan 一眼 deepseek 生成内容,这玩意已经能被人类识别了
|