请教 Windows 桌面开发选择

2023-12-15 12:00:02 +08:00
 JustinL
先说一下背景:建筑行业公司,内部工程师用,因此只需要 Windows 即可,同时公司所有电脑已经是 Win11 ,不用兼容 xp 那种包袱,可以考虑上最新的技术。内部使用铺开后如果反馈不错,有可能对外销售。

做了一些 study ,感觉主要是这几种:
1. Delphi/Lazarus 。在前公司用过,确实很方便,但是 Delphi 需要授权,Lazarus 社区也比较小,领导不喜欢,pass
2. C#+WPF 。主要担心被反编译问题,但是貌似很多软件也是 C#,请问是否多虑?搜了一下没有太好的解决方案。
3. C++ qt 。主要担心上手难度问题,团队没写过 C++,不过兴趣很大,就是怕交付时间不能保证。
4. C#写界面,C++写核心算法。不知道里面有没有什么调用的坑?

限定在 Windows 就行了,不需要讨论跨平台。

陷入选择困难症了……请有经验的大佬们指点一二~
17048 次点击
所在节点    Windows
134 条回复
jeeyong
2023-12-15 14:15:34 +08:00
@JustinL 我一直理解的是 nuitka 是转义一次然后打包? 还真没太在意源码的问题. 我交付的时候源码都是直接给的.哈哈
Mithril
2023-12-15 14:17:22 +08:00
C# + WebView2 ,前端一套写界面,后端直接就是个 webserver 。
这是前后端开发都最简单的方案。

至于加密和破解,这就是个成本问题。如果你只想上个难度,那代码混淆也就够了。非要硬搞的话就上基于虚拟机的解决方案,但个人觉得压根没必要。你一个行业内部软件,除非做得特别好,别人不用不行,或者技术独特,算法非常好。不然没那么多人闲的去反编译的。
然而算法你最好用专利保护,光靠代码也是防不住的。
sunmker
2023-12-15 14:22:41 +08:00
用 C#的 winform ,更快
vvvvvvvv
2023-12-15 14:28:38 +08:00
有个神奇的东西叫做 aardio
j519
2023-12-15 14:30:17 +08:00
选简单的。
rwecho
2023-12-15 14:34:18 +08:00
@shijingshijing

你要是不知道可以不说
afirefish
2023-12-15 14:35:37 +08:00
C# + Avalonia 。C# native 调用 C++代码非常方便,也莫得啥性能损失。
别听上面人瞎 jb 扯淡。C#免费,开源。而且技术栈非常完善。
afirefish
2023-12-15 14:36:19 +08:00
@shijingshijing 不知道可以不说。造谣可就违法了~
xieren58
2023-12-15 14:36:22 +08:00
@JustinL 前段时间用 avalonia 做完一个项目, 比 wpf 爽... .net 8 可以 aot, 难以反编译, 如果不用 net 8 , 核心点还可以用 rust 写 dll, 有相关的库 uniffi-bindgen-cs, 没办法反编译... 我那项目就是 avalonia + rust , 核心点用 rust 写, 速度快, 又不怕反编译...
xieren58
2023-12-15 14:37:25 +08:00
@JustinL 对了, 原来那项目是 wpf + webview2, 改成了现在的 avalonia + rust...
rwecho
2023-12-15 14:39:10 +08:00
@JustinL
反编译的话和你的成本有关系, 如果你的客户端已经被黑客拿到了, 剩下的是攻防问题. 目前说的混淆之类的, 只是防一些入门级别

最安全的是放在服务端. 让他们拿不到关键代码逻辑.


@Mithril 说的很好, C# (WPF+winform)+ webview2 目前是能兼具桌面优势和 web 优势的开发技术.

甚至可以用 MAUI Avaloinia + Blazor + webview2

真正的攻与防和代码无关. 和成本有关
rwecho
2023-12-15 14:40:24 +08:00
@xieren58 是桌面项目还是移动端? 很有兴趣,有开源吗?
keymao
2023-12-15 14:42:10 +08:00
electron+cpp 核心模块 免费 无商用风险
avalon8
2023-12-15 14:44:36 +08:00
electron 套壳
sunzhuo
2023-12-15 14:45:45 +08:00
什么算法?有没有现成的库?
c2const
2023-12-15 14:46:42 +08:00
团队没 C++经验,那 1 、3 、4 可以直接放弃,直接选 2 :)
---------------------
至于 C#的反调试和反逆向,不要自己做、也不要用免费的,用付费方案挡住大部分人即可 :)
最好是把核心功能放在服务器上,即使破解本地软件也用不了 :)
xieren58
2023-12-15 14:50:27 +08:00
@rwecho 桌面项目, 商用, 靠这个赚钱, 没办法开源...
andytao
2023-12-15 14:50:40 +08:00
还有如下解决方案:
1 、Flutter + Dart ,现在手机上用的都是它,它也能开发桌面版;

2 、GTK + Vala ,用 C# 的原生版开发原生桌面程序,技术很成熟,也能开发大型应用;
大型 GTK 应用 [袋鼠数据库工具] 用的就是这套方案。
andytao
2023-12-15 14:55:46 +08:00
袋鼠工具相关界面可以从这里看到:
https://github.com/dbkangaroo/kangaroo
dhssingle
2023-12-15 14:59:28 +08:00
Avalonia

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

https://tanronggui.xyz/t/1000641

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

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

© 2021 V2EX