C++ 和 C# 哪个容易开发出用户体验好(占用资源小&好看&稳定&反应快)的跨 macOS/Windows 平台的桌面程序?

2022-03-20 00:15:46 +08:00
 rv54ntjwfm3ug8

Electron 不考虑,没见过用 Electron 写的用户体验好的程序,公认优化好的 VS Code 启动也很慢,剩余内存一不够就卡得要死。

目前是有一点 C++ Qt 和 C# WinForm 开发经验。想写一个桌面程序,因为比较喜欢 C#(很多功能都不用自己实现,而且我更熟悉一点),而且听说 C# 的 Avalonia 框架可以用来非常方便地开发好看的跨平台 GUI 程序,于是打算用 C#来写。但 Google 了一下,很多人说 Avalonia 在 macOS 上有很多 non-native 行为,例如复制键变成了 Control-C 而不是 macOS 默认的 Command-C ,而且不是很稳定,经常崩溃,也没有什么知名开源项目在用,资料不好找。想问问 C++ 和 C# 哪个容易开发出用户体验好(好看&稳定&反应快&占用资源小)的跨 macOS/Windows 平台的桌面程序?或是还有什么更好的方案?

好看很重要,最好能方便地实现一些过渡动画。

11882 次点击
所在节点    程序员
131 条回复
mineralsalt
2022-03-20 09:30:37 +08:00
现在电脑里面 Electron 程序的数量越来越多了, 虽然我不愿意用, 但是没办法啊
0o0O0o0O0o
2022-03-20 10:04:11 +08:00
我喜欢 electron ,没有 electron ,有些工具可能不会考虑桌面版
leyviw
2022-03-20 10:05:42 +08:00
cef + c++,ui 用 web 技术,核心用 c++,cef 比 electron 更简洁独立
pengtdyd
2022-03-20 10:34:02 +08:00
electron ,flutter ,原生这个三个我要选,我选 electron ,原因如下:
1.futter desktop 目前尚不成熟,需要自己写插件,有些功能不完善
2.原生虽然效率,速度,占用都不错,但是现在的个人 pc 早已不太需要考虑这些问题,从产品的角度来说,速度快永远不是第一考虑的事项
3.electron 经过这么多年的发展,nodejs 的生态已经可以覆盖几乎所有的场景,想用直接调用别人写好的包就好,开发效率高
4.electron 可以很好的贴合前端技术栈,这一点仁者见仁智者见智,至少对于企业来说,选择统一技术栈,更有利于团队的技术发展
WebKit
2022-03-20 10:35:12 +08:00
@wdhwg001 flutter 只是 UI 原生功能需要插件支持。
WebKit
2022-03-20 10:37:41 +08:00
@theklf4 flutter 的 debug 版本,会比 release 版本慢很多,因为它是热更新的,全平台都这样。对 win 的正式支持是上个月。以前都是 beta 。可以现在打包一个 release 版本看看
ZSeptember
2022-03-20 10:48:30 +08:00
QT 资源占用真不少,自家的 QtCreator Qt 写的,很慢。
看起来你还是想用 C# 的,那就看看 MS 官方的跨平台框架吧,我记得有好几个,Xamarin ,MAUI

我自己的话,没有 C# 背景,如果自己的应用,会选择 flutter
secondwtq
2022-03-20 10:56:08 +08:00
WASM 在 #24 还是不可避免地出场了 hhh
macha
2022-03-20 11:04:14 +08:00
先用 electron 撸出原型。
大部分应用对 UI 的性能要求没那么高。
没有完美的框架。
secondwtq
2022-03-20 11:26:11 +08:00
@duke807
为什么不用 HTML 用 QML:这个锅其实 Web 要背一半,HTML 背另一半。Web 的设计是在沙盒里运行,所有的 API 都要包一层,这就是说在 Web 平台上是无法直接访问到 native 上的 API 的。经过 Web 封装的 API 开销更高,功能更落后,基本上只有个下限。前两年前端各种“前端也可以 XXX 了”,实际上这些在前端之外的领域都不算什么。当然如果不在浏览器里跑可以自己做 binding ,但是还是比 native 麻烦。HTML 的锅是它本来是用来做文档的(“Hypertext”),不适合直接用来做“Application”,现在能做是后来各种补丁整出来的。QML 很明确一开始就是做 application 的。

另外你在个别行业看到的现象,需要个别去分析。技术对更大的东西的直接影响力很有限。实际问题要考虑更多技术之外的东西。
比如我在 VFX 行业看到的现象就是以前每个软件都有一套自己的插件开发技术,但是逐渐统一到了 Python+Qt 的组合。我能因此推导出 Qt 南波湾么?
但同时发生的另一个现象是 Blender 迅速崛起,彻底火出开源圈。就连现在 PC 硬件评测,以前跑 CINEBENCH ,现在也要跑 Blender Benchmark 。Blender 用的不是 Qt ,它自己写了一套界面库。能不能说他这个界面库比 Qt 更好呢?大概也不能。Blender 里面照样一堆老旧设计和屎山代码,它能火就是因为它开源,并且 somehow 一直运营的很不错,后来基本上除了已有专有套件的开发者和其死忠粉之外,所有人都认识到这东西能有好处,所以它花了十五年从默默无闻最后混成了 CG 圈的 Linux 。
IM 是另一个例子,小而美是技术最好的 IM 么?大概不是,但是在个别地区它确实是最流行的 IM 。
nicevar
2022-03-20 11:42:29 +08:00
这种没什么好的选择,跨平台 Qt 就是最好的,功能简单的用 Electron 做还行,复杂的就不要用了,Flutter 现在也就是个半成品,做小工具还行,做项目就是跳坑。

我试验过很多的技术选择,以前用 delphi/vb/vc+mfc/java+awt/swing/swt ,后面用过 Lazarus+Pascal/Codeblocks+wxWidgets/javaFx ,我就想说框架就选择最成熟的,否则那不叫开发,那叫踩坑,项目开发到一半发现有些问题无法解决然后推翻重来?这种公司我真的见很多了。
MakHoCheung
2022-03-20 11:43:29 +08:00
1. 会 C# 不会 Swift 的话可以上 MAUI ( Xamarin )
2. 两个都会的话直接 WPF + SwiftUI ,SwiftUI 开发非常快的
geekvcn
2022-03-20 12:03:39 +08:00
大公司传统软件基本都选择了 QT 开发,AMD ,金山等。互联网公司基本选择 Electron 或者其他 webview 框架
wdhwg001
2022-03-20 12:13:07 +08:00
@WebKit https://github.com/flutter/flutter/issues/63043
别洗了,Flutter 桌面在 Win 端远远不止是需要写插件——它甚至连基础的文字渲染都做不好。
wangyzj
2022-03-20 12:17:49 +08:00
@darklights #10 +1
wangyzj
2022-03-20 12:19:17 +08:00
你看各自应用市场就知道
还有就是绝大多数游戏不支持 mac
所以桌面跨平台貌似只有 Electron 是个好选择
luchong
2022-03-20 12:26:19 +08:00
C# 直接 WPF 或者 Xamarin 吧 丝滑 爽的一批 好看又能打
roundgis
2022-03-20 13:11:46 +08:00
cross platform ui 都是要自己踩坑的
g00001
2022-03-20 13:26:46 +08:00
macOS + Linux 的桌面市场份额小于过气的 Win8 。跨平台带来的回报不大,代价却很大,专有平台的优势与很多系统自带组件都不能利用起来。

而且 “桌面软件”是一个很大的概念,具体到是什么桌面软件适合的开发工具都不一样,像用 C# 开发的桌面软件,往 ILSpy 里一拖源码就可以导出来,这要有心理准备。现在 Electron 也是被滥用得太狠了,网页套壳的程序,那确实 Electron 、WebView2 这些都没问题。但是有很多软件并不一定适合用 Electron 之类开发,像录屏软件 Gif123 下载体积只有 720KB ,输入法工具 WubiLex 下载体积只有 960KB ,这种软件用 Electron 就只会增加体积但并不能消减开发成本。

不过如果喜欢在界面上弄很多动画,这最好还是用网页套壳,Electron 其实也过气了,在 Windows 上更好的替代是 WebView2 。
lonewolfakela
2022-03-20 14:24:19 +08:00
整个邪道点儿的,用 Dear ImGui 整一个吧……

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/841554

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX