请教 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 就行了,不需要讨论跨平台。

陷入选择困难症了……请有经验的大佬们指点一二~
17045 次点击
所在节点    Windows
134 条回复
buxudashi
2023-12-15 13:18:04 +08:00
aardio,tarui,flutter. c#
0o0O0o0O0o
2023-12-15 13:19:48 +08:00
如果担心被反编译的话,不是靠选语言选框架就行的,也不是靠#30 那样改改编译选项就可以的,建议挑选过程中把商业化保护方案考虑在其中
JustinL
2023-12-15 13:21:46 +08:00
@loophole12 不同部门,而且普通工程师也是有可能给其他公司的工程师用的
Chad0000
2023-12-15 13:22:14 +08:00
@shijingshijing #39

OP 使用免费的 Visual Studio Community 版开发呢?就算 OP 公司发财了要买,VS Pro $499 是买不起么?其他免费方式我没搞过因为我个人使用 Community 版,公司给买的 Pro (还附带 Azure 每月大几十刀体验额度,快白给了),不需要考虑其他方案。
shijingshijing
2023-12-15 13:28:25 +08:00
@Chad0000 我没记错的话 Community 还有以前的 Express 版本,是无法开发和编译 Winform 的,WPF 的我不知道。
shijingshijing
2023-12-15 13:32:40 +08:00
#45 错了,Community 不确定,Express 我确定是无法使用 Form Designer 来直接拖拽控件开发的。
Chad0000
2023-12-15 13:33:29 +08:00
@shijingshijing
我开发 Winform 和 WPF 好多年,虽然这几年大部分搞 Web 了但 Community 无法开发 Winform 是头次听说。你最好不要乱说,Community 只是没有高级的一些调试和监控功能而已(说实话我用 Pro 也用不到这些高级功能)。
0n2ynu
2023-12-15 13:41:18 +08:00
windows 桌面开发, C#毫无疑问
jeeyong
2023-12-15 13:41:21 +08:00
@JustinL pyinstaller 或者 nuitka 打包发布啊.
ysc3839
2023-12-15 13:42:29 +08:00
没有好的选择,要防止反编译的话个人还是会选择 C++。
具体得看搞什么功能,用 Win32 写起来可能很麻烦。MFC 也许能省一点事,但是也是淘汰的技术,个人不推荐使用。
还可以考虑 WinUI ,但是系统至少要 Win10 1903 。WinUI 有个“分支”是 React Native ,界面逻辑用 js 写,底层界面库还是用 WinUI ,同时也可以用 C++写功能暴露给 js 调用。
也可以考虑 C++ + WebView ,但前端部分感觉很容易被反编译。
不建议 C# + C++,你用 C++写的都是做成 DLL 给 C#调用,那别人完全可以把你的 DLL 弄过去换壳直接使用。
Dorian101
2023-12-15 13:45:10 +08:00
@rwecho 敏感的部分可以 AOT
JustinL
2023-12-15 13:46:05 +08:00
@jeeyong 这是打包吧,源码还是可以很容易得到?
Dorian101
2023-12-15 13:46:51 +08:00
@shijingshijing .NET 的所有方面都是开放源代码,包括类库、运行时、编译器、语言、ASP.NET Core Web 框架、Windows 桌面框架以及 Entity Framework Core 数据访问库等。
xieren58
2023-12-15 13:48:09 +08:00
JustinL
2023-12-15 13:50:14 +08:00
@ysc3839 楼上确实很多人建议套 web 做界面。另外说到 C#调用 C++ dll 的问题,可不可以在 dll 里面做一些鉴权的措施?例如在公司网络下才能以调用?
Chad0000
2023-12-15 13:51:09 +08:00
OP 这么关心反编译,直接找相关技术是否有付费的方案,价格多少就行了。免费的又不能保证还得自己研究,如果付费的可负担还浪费啥。
JustinL
2023-12-15 13:54:40 +08:00
@xieren58 我理解除了跨平台特性,这个框架和 WPF 并无二致?
majianglin
2023-12-15 13:58:34 +08:00
我推荐 Electron ,web 前端开发人员上手太快了,JS 编译后很难反编译的

也可以用 C++开发 NodeJS 插件来做加密鉴权和密集计算模块
ggvoking
2023-12-15 14:07:34 +08:00
没看懂这么多人推荐 Electron ,话说如果本来就是 C#技术栈,那 wpf 肯定是最佳选择。
elechi
2023-12-15 14:11:37 +08:00
WPF 加个 MVVM

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

https://tanronggui.xyz/t/1000641

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

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

© 2021 V2EX