经过一周的选型讨论,包括 Tauri 作者和 flutter_rust_bridge 作者的深度参入,我们暂时放弃 Tauri ,主要原因是 Tauri 放弃了共享内存的支持,而 IPC 目前性能很差,也看不到近期可以改善的可能性,偏偏这个特性的不完善对于 RustDesk 应用是致命的。
今天我们启动了 Flutter 迁移项目,整个开发过程都是公开的,有兴趣的可以参入学习讨论,根据情况再决定是否需要开启一个微信讨论群。
目前确定三位参入者,
前两位小同志是实习生,后一位是 RustDesk 团队成员。
上周收到很多应聘实习生的邮件,大家都问怎么考察,所以我提一下我的简单方法。
SoLongAndThanksForAllThePizza的确定是他在选型讨论中的表现。
Kingtous已经通过提交 PR 体现了能力。
不一定适用于其他老板,但是积极展现能力应该是通用的,毕竟是开源项目。
1
Buges 2022-05-23 20:28:40 +08:00 via Android 1
tauri 只是个 webview 啊,如果你们不打算开发 Web UI (类似 noVNC ?)的话,不该把远程桌面放到 webview 里渲染吧。
图形渲染应该开一个单独的窗口直接调用图形 API 性能才是最高的,这种境况下少量的 ui 组件就应该采用一些立即模式的库,不知道 egui 你们考虑过没。 |
2
opentrade OP @Buges 考虑过 Tauri 作者提到 TAO-EGUI ,但是暂时还没有勇气给它们当小白。全部用 EGUI 写,就更没有勇气了,EGUI 作为嵌入式 UI 框架的确非常棒。
|
3
Buges 2022-05-23 21:41:05 +08:00 via Android
@opentrade egui 还是挺完善的,嵌入到 gl/vulkan/wgpu/glfw 等上下文中非常方便。
追求性能的话考虑一下分窗口,主界面、控制界面逻辑复杂、多交互,用 webview 或 flutter 写。渲染窗口注重高性能,控件简单,用原生的图形 API 配合 egui 少量组件。可以参考一下那些游戏串流的工具,嵌入到其他 GUI 库里性能可能很难达到要求。 |
4
janxin 2022-05-23 21:50:47 +08:00
不错,观摩一下
|
5
opentrade OP @Buges 我们可能更想试试 flutter 的 native view ,TextureLayer 之类,当然了,我这方面也没啥经验
|
7
ysc3839 2022-05-24 09:39:04 +08:00 via Android
能不能具体说说 Tauri 的共享内存是什么?以及 IPC 有什么问题?
|
8
opentrade OP |
9
ysc3839 2022-05-24 14:49:11 +08:00
@opentrade 这种问题啊,一般不会用 WebView 来渲染,建议直接在 WebView 上叠一个原生窗口,然后想办法进行位置同步。
顺便看了下 Sciter 的文档,你说的是 sciter::video_destination 的 render_frame()吗?这个感觉也有性能损失的,因为走内存传输了,最好的做法是直接传递显卡硬解出来的帧,不过这么做可能不能跨进程。 |
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 架构的人也都在 |