V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xjhou00007
V2EX  ›  Web Dev

c++ go rust 谁更适合开发 嵌入式 Linux 上的 web 后台服务

  •  
  •   xjhou00007 · 1 天前 · 2490 次点击

    各位大佬,请教一下,准备在 3568 板子上开发部署一套 web 服务,前端用 nginx+h5(前端不是我写),后端开发 web 服务提供接口,c++,go,rust 选哪个开发比较好。

    目前板子上有一套在跑的后台应用程序是用 c++写的,现在要加 web 服务功能,不想加到原来的应用程序里面,并且也想尝试学习一下其他的语言,看了一下 go 和 rust 的简单介绍,感觉上手应该不难,但是想了解一下上手哪个更合适。如果有能够方便开发 http server 和 http client 的成熟的框架和库最好了。

    这套程序也就我一个人开发维护,不需要考虑团队协作。。。

    37 条回复    2024-11-01 10:26:06 +08:00
    zsj1029
        1
    zsj1029  
       1 天前
    go 更简单,虽然 rust 占用更少
    go 10mb vs rush 2MB
    出活效率建议 go
    helone
        2
    helone  
       1 天前
    如果就简单 crud 的话可以考虑 rust ,但是上手可能会复杂点,不过现在有 gpt 这种的有啥不会问就是了,go 的话就更简单点,上手更快
    xjhou00007
        3
    xjhou00007  
    OP
       1 天前
    @zsj1029
    @helone
    系统内存还是比较盈余的,不考虑这个的话看来还是 go 更适合上手
    多问一句,在 aarch64 linux 平台上部署 go 环境,以及交叉编译 go 程序会不会遇到很多坑
    zsj1029
        4
    zsj1029  
       1 天前
    @xjhou00007 go 的编译比 rust 简单多了,编译无脑一句 cgo=0 好像是,根本不用考虑兼容性
    rust 跟 c 差不多,很多工具链,时间很长
    zsj1029
        5
    zsj1029  
       1 天前
    @xjhou00007 支持跨平台编译,总之很简答,win 上打包 arm x86 都可以
    Donahue
        6
    Donahue  
       1 天前
    go 。rust 复杂得不行,设计目标也不是 web 服务
    Donahue
        7
    Donahue  
       1 天前
    @xjhou00007 go 部署/交叉编译很简单 没坑
    xjhou00007
        8
    xjhou00007  
    OP
       1 天前
    @zsj1029
    @Donahue
    明白了,感谢指点
    xjhou00007
        9
    xjhou00007  
    OP
       1 天前
    不论这个需求功能开发的话,作为一个 c++后台开发,rust 有没有学习的必要,rust 和 go 谁的泛用性更好,未来更用的上呢
    xjhou00007
        10
    xjhou00007  
    OP
       1 天前
    好像不能编辑主题哈
    helone
        11
    helone  
       1 天前
    如果是 c++ 开发学习 rust 很有必要,c++写的东西 rust 能完全替代甚至更好,go 的话完全兴趣爱好,更偏 web 方面,而且有 gc 存在,偏底层的东西肯定做不了
    bluearc
        12
    bluearc  
       1 天前
    @xjhou00007 #9 rust 肯定更泛用,但就你描述的需求我觉得 go 更好些;
    adoal
        13
    adoal  
       1 天前
    3568 跟零几到一几年的 X86 可以打个来回,不用特别考虑“嵌入式”,性能足够,技术选型时就当普通的 Linux 小主机好了。
    victorc
        14
    victorc  
       1 天前
    看你内存大小,如果只有几十 M ,当然用 rust
    用大模型帮忙写,分分钟搞定
    IvanLi127
        15
    IvanLi127  
       1 天前
    我感觉,只是感觉,rust 更适合嵌入式,也更适合 C++ 选手。 如果项目不复杂的话,rust 已经能轻松胜任,复杂的话我就不知道啥情况了。
    mightybruce
        16
    mightybruce  
       1 天前   ❤️ 1
    嵌入式 web 基本都是 C, C++ , 这种不是多的很。何必找一些不成熟的项目。
    这种项目首先要考虑的就是资源占用,占用大的一概不考虑了。

    https://github.com/civetweb/civetweb
    yplam
        17
    yplam  
       1 天前 via Android
    要考虑跟 c++的交互方式,如果要用到 cgo 的话建议还是 rust 或者直接 c++
    jqknono
        18
    jqknono  
       1 天前
    这是嵌入式啊, web 技术栈都是其次, 这也无脑推 go 吗, 常见的是 c/c++. 新的一点大家推 rust, 我不了解这个.
    嵌入式一般都是启动时提前规划好内存怎么用的. 如果这个板子根本没什么定制启动定制软硬件, 那就是一个普通的 linux 了, 通用 linux 开发后台那才是优选 go
    starlion
        19
    starlion  
       1 天前
    只是 http server ,http client 可以考虑下 Go ,Go 语言都自带的。另外 Go 的 web 应用框架 Gin 、Fiber 也有这些功能。

    不过嵌入式,是不是内存比较小 (2G ?),没搞过嵌入式,还是看你的服务器配置,业务上功能需求,业务量,开发效率等综合考虑
    815979670
        20
    815979670  
       1 天前
    建议选 go 只要避免 cgo 交叉编译没什么坑
    tool2dx
        21
    tool2dx  
       1 天前   ❤️ 1
    @starlion 我在开发 openwrt 的嵌入式,全部只有 24M 的存储空间。内存还算比较大,冗余有 100M 。
    adoal
        22
    adoal  
       1 天前
    @starlion 说到 2G 内存太小……我在一个 S905D 、2G 内存、8G EMMC 的盒子里(猜的没错就是 N1 )装了一个 alpine 再用 libvirt+qemu 开起来三个虚拟机:一个 Debian 两个 OpenWRT……
    ca2oh4
        23
    ca2oh4  
       1 天前
    c++ 写 web 已经非常方便了,不如沿用之前的技术栈.
    wupeaking
        24
    wupeaking  
       1 天前
    我也买了个 RK3566 玩了玩, 感觉交叉编译的话 C++和 rust 更方便一些,尤其是如果还会调用 C 代码的话。写 web 后端还是 Go 比较擅长。纯 Go 代码的 web 框架应该都能直接迁移到嵌入式 Linux 上的。如果涉及到 CGO 的话,感觉会有很多坑了。尤其是那些 glic 版本折磨人的很。这个时候 rust 真的很好用。
    janus77
        25
    janus77  
       1 天前
    先不说什么设备,做 web 项目,偏业务的话,这三者明显是 go 更好啊,不过也只是三个低分党里面找相对较高的那个了,三个语言写业务都不太舒服
    xjhou00007
        26
    xjhou00007  
    OP
       1 天前
    @mightybruce
    @victorc
    @starlion
    内存还好,现在用的 3568 板子 4G 内存,抛去已经占用的,还有 2G 左右的可用内存
    xjhou00007
        27
    xjhou00007  
    OP
       1 天前
    @jqknono 没有到像单片机那样每段内存都划分好,就是 arm linux 系统,系统启动后再自动运行程序
    Umenezumi
        28
    Umenezumi  
       1 天前
    web 肯定是 GO 啦,编译简单,上手轻松,GPT 无脑一把梭,时间充裕爱折腾 rust 也可以,不过为了出活儿我肯定选 GO
    InkStone
        29
    InkStone  
       1 天前
    具体这个场景不好说,但 C++研发还是有必要学一下 Rust 的。哪怕不写,也能学习一下 Rust 怎么处理 C++中的坑,很多处理方式可以反哺到 C++开发中。
    mightybruce
        30
    mightybruce  
       1 天前
    看来你这个内存比较富裕,golang 等一堆语言也是可以用的。
    直接做嵌入式 web 服务的话,c 推荐 mongoose, civetweb 。
    go 标准库就可以搞,也不需要借助其他。
    mightybruce
        31
    mightybruce  
       1 天前
    https://github.com/cesanta/mongoose
    这个 西门子,三星,谷歌 都在用
    civetweb 有 lua 模块,写一些嵌入式也比较方便
    yifeia
        32
    yifeia  
       1 天前
    web 服务直接 go 一把梭哈,写一个项目你就会用 go 了
    rlds
        33
    rlds  
       1 天前
    那必须用 go
    chenxuuu
        34
    chenxuuu  
       1 天前
    如果本身就已经有一大堆 C++代码了,要在工程里加个新功能,用 C++
    如果是写个和现有项目不太强耦合的小模块,熟悉 C++开发,喜欢对内存的掌控感,可以考虑用 Rust
    如果不熟悉 C++,技术栈偏向应用,不熟悉也不想了解硬件底层,网络环境始终支持科学上网,可以试试 Go
    vicalloy
        35
    vicalloy  
       1 天前
    3568 外加 4G 内存,性能已经很强了。
    对于 web 服务,一般情况下即使你用 python 都不会有性能问题。
    yangliudi123
        36
    yangliudi123  
       1 天前 via iPhone
    优先 c++含 c ,嵌入式主流还是 c 和 c++
    XinPingQiHe
        37
    XinPingQiHe  
       10 小时 1 分钟前
    虽然 go 相对简单些,但是你这个应用,前面的也是 c++写的,自己一个人做,建议大胆尝试 rust 。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2784 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 12:27 · PVG 20:27 · LAX 05:27 · JFK 08:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.