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

RustDesk Desktop Flutter 迁移启动

  •  
  •   opentrade · 2022-05-23 19:44:37 +08:00 · 2324 次点击
    这是一个创建于 697 天前的主题,其中的信息可能已经有所发展或是发生改变。

    不好意思我又来发帖了,团队带起来了,我就比较闲了,:)。

    经过一周的选型讨论,包括 Tauri 作者和 flutter_rust_bridge 作者的深度参入,我们暂时放弃 Tauri ,主要原因是 Tauri 放弃了共享内存的支持,而 IPC 目前性能很差,也看不到近期可以改善的可能性,偏偏这个特性的不完善对于 RustDesk 应用是致命的。

    今天我们启动了 Flutter 迁移项目,整个开发过程都是公开的,有兴趣的可以参入学习讨论,根据情况再决定是否需要开启一个微信讨论群。

    项目地址

    目前确定三位参入者,

    SoLongAndThanksForAllThePizza

    Kingtous

    Heap-Hop

    前两位小同志是实习生,后一位是 RustDesk 团队成员。

    上周收到很多应聘实习生的邮件,大家都问怎么考察,所以我提一下我的简单方法。

    SoLongAndThanksForAllThePizza的确定是他在选型讨论中的表现。

    Kingtous已经通过提交 PR 体现了能力。

    不一定适用于其他老板,但是积极展现能力应该是通用的,毕竟是开源项目。

    10 条回复    2022-05-30 06:21:38 +08:00
    Buges
        1
    Buges  
       2022-05-23 20:28:40 +08:00 via Android   ❤️ 1
    tauri 只是个 webview 啊,如果你们不打算开发 Web UI (类似 noVNC ?)的话,不该把远程桌面放到 webview 里渲染吧。
    图形渲染应该开一个单独的窗口直接调用图形 API 性能才是最高的,这种境况下少量的 ui 组件就应该采用一些立即模式的库,不知道 egui 你们考虑过没。
    opentrade
        2
    opentrade  
    OP
       2022-05-23 21:22:39 +08:00
    @Buges 考虑过 Tauri 作者提到 TAO-EGUI ,但是暂时还没有勇气给它们当小白。全部用 EGUI 写,就更没有勇气了,EGUI 作为嵌入式 UI 框架的确非常棒。
    Buges
        3
    Buges  
       2022-05-23 21:41:05 +08:00 via Android
    @opentrade egui 还是挺完善的,嵌入到 gl/vulkan/wgpu/glfw 等上下文中非常方便。
    追求性能的话考虑一下分窗口,主界面、控制界面逻辑复杂、多交互,用 webview 或 flutter 写。渲染窗口注重高性能,控件简单,用原生的图形 API 配合 egui 少量组件。可以参考一下那些游戏串流的工具,嵌入到其他 GUI 库里性能可能很难达到要求。
    janxin
        4
    janxin  
       2022-05-23 21:50:47 +08:00
    不错,观摩一下
    opentrade
        5
    opentrade  
    OP
       2022-05-23 22:07:48 +08:00 via Android
    @Buges 我们可能更想试试 flutter 的 native view ,TextureLayer 之类,当然了,我这方面也没啥经验
    opentrade
        6
    opentrade  
    OP
       2022-05-23 22:08:23 +08:00 via Android
    @Buges egui 作为嵌入式 ui 的确够成熟了
    ysc3839
        7
    ysc3839  
       2022-05-24 09:39:04 +08:00 via Android
    能不能具体说说 Tauri 的共享内存是什么?以及 IPC 有什么问题?
    ysc3839
        9
    ysc3839  
       2022-05-24 14:49:11 +08:00
    @opentrade 这种问题啊,一般不会用 WebView 来渲染,建议直接在 WebView 上叠一个原生窗口,然后想办法进行位置同步。
    顺便看了下 Sciter 的文档,你说的是 sciter::video_destination 的 render_frame()吗?这个感觉也有性能损失的,因为走内存传输了,最好的做法是直接传递显卡硬解出来的帧,不过这么做可能不能跨进程。
    sunbreak
        10
    sunbreak  
       2022-05-30 06:21:38 +08:00
    https://github.com/leanflutter ,LeanFlutter 算是目前专注 Flutter Desktop 最大的组织

    参见 https://github.com/leanflutter/awesome-flutter-desktop

    有 Discord: https://discord.gg/Vw2v9kAN?

    也有微信群,可以加微信 wk2311007

    PS:字节、阿里等做 Flutter 架构的人也都在
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2273 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 16:11 · PVG 00:11 · LAX 09:11 · JFK 12:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.