Qt(C++) 性能高,效果好,跨平台,开发效率低(C++的锅)。
WPF(C#) 性能适中,效果好,不跨平台,开发效率中等,占内存。
Electron(NodeJS) 性能低,效果好,跨平台,开发效率高,占内存,三方库支持少。
现在很多新应用都已经使用Electron来开发了,需要高性能的使用
node-ffi
调用原生即可。
不建议使用Python+QT(或其他框架)来做客户端,我是使用了一段时间放弃了,打包大,性能也不高,关键是相关的文档也少,出现问题找解决方案都难。
如果性能要求不高的应用建议使用Electron,性能要求高点的用WPF或Qt(C++)。
C++
的有
Qt
、MFC、WTL、wxWidgets、DirectUI、Htmlayout;
基于
C#
的有 Winform、WPF;
基于Chromium和
Node.js
的
Electron
;
基于
Java
的有 AWT、
Swing
;
基于 Pascal 的 有Delphi;
基于
Go语言
的有
walk
还有国内初露头角的
aardio
;
Visual Basic 曾经很流行,现在逐渐失去了色彩;
现在常用的方案
Duilib+CEF
只支持Windows的选择,优点是打包文件小(使用C++) QQ、微信、有道精品课。
Qt+CEF 支持跨平台,缺点是打包文件大(使用C++)。
WPF/(WPF+CEFSharp) 打包文件小,但是性能相比前两者弱,但比Electron强,内存占用高,只支持Windows。
Electron 打包文件大,但是性能弱,内存占用高,支持跨平台。
几种方案都各有利弊,可以根据团队的情况选用,都是相对不错的,其他的方案比如Flutter,Java就不太推荐。
DirectComposition
而 WPF 使用的 Desktop Window
虽然 WPF 渲染是通过 Dx9 但是最后显示出来是需要
Desktop Window Manager(DWM)
。