现有技术栈:
1. .NET+WPF(2010) 现有平台,非常老,公司主力
2. Python + Flask/Django 使用量很大,但是以自动化和脚本为主
备选技术栈:
1.Nodejs+Electon
2.QT+PySide
3..Net Core+WPF
4..Net Core+Asp.NET Blazor, 给 Web 服务加壳
5..Net Core+Xamarin+Asp.NET Blazor, 混合程序,进程内复用
预期未来会持续迁移到 Web/Mobile/小程序,看好 Web 技术和未来.Net 5/6 的发展,又担心微软天天折腾
各位老哥有什么建议?
1
MasterMonkey OP 自己顶一下,现在是不是没人开发客户端软件了?
|
2
renmu123 2020-10-31 15:21:05 +08:00 via Android 1
那就 Electon,多平台复用,也能直接上 web 。正好也为之后的小程序做技术积累
|
3
annielong 2020-10-31 16:11:23 +08:00
跨平台还是 Electon,不跨平台还是 net,
|
4
JerryCha 2020-10-31 17:04:23 +08:00
直接开发成 web 版,然后套个 Electron
|
5
jorneyr 2020-10-31 17:47:01 +08:00
Sciter 可以试试,JS 的,描述说打出来的包比 Electron 和 Qt 小很多。
|
6
zhuangzhuang1988 2020-10-31 18:21:54 +08:00 via Android 1
熟悉哪个用哪个
|
7
MasterMonkey OP 最近.net 5 快发布了,加上 blazor 很火,心里痒痒。想迁移到到新的.net 5 平台,但是 blazor 好像没有官方的 UI 组件库,有点拿不定主意。
|
8
MasterMonkey OP @jorneyr Sciter 更小众了吧?
|
9
MasterMonkey OP @zhuangzhuang1988 团队技术 zhan 栈很老,想趁机升级下,有没有未来 5 年可延续的技术平台?
|
10
MasterMonkey OP @JerryCha 也是这个意思
|
11
MasterMonkey OP @renmu123 嗯,web 有前途
|
12
MasterMonkey OP |
13
beginor 2020-10-31 20:55:29 +08:00 via Android
建议转 Web,客户端用 cefsharp 包装一下, 调用 Windows API 还是 csharp 方便
|
14
ysc3839 2020-10-31 21:35:45 +08:00 via Android
不考虑程序体积的话,还是用 Web 那一套吧,跨平台方便。
|
15
ysc3839 2020-10-31 21:39:18 +08:00 via Android
@MasterMonkey #8 Sciter 用的人少可能是因为商用要收费,在 Web 技术免费且生态丰富的情况下,优势并不明显。
|
16
WangLiCha 2020-10-31 21:39:29 +08:00
桌面端跨平台的话我觉得意义不大,除非有明确的 macOS 和 Linux 的需求,纯桌面端怎么说都感觉是 WPF 最合适。当然 WPF 是严格限定在了纯 Windows 平台,.Net Core + WPF 最大的意义可能也就是复用一下 dll 。Xamarin 的话目前确实被 Google 的 Flutter 吊着打,之后又要被 MAUI 取代,至少不建议尝试 Xamarin 。
|
17
hjc4869 2020-10-31 21:41:03 +08:00
短期先快速迁移到 .NET 5 + WPF 然后苟着吧,后面会怎么样都不清楚。
|
18
MasterMonkey OP @hjc4869 理解,这个暂时是行得通的。但是,忍不住想带点 Web 技术,Web 太强了
|
19
JavaDeveloper 2020-10-31 21:57:06 +08:00
1
|
20
MasterMonkey OP |
21
MasterMonkey OP 但是呢,Web 有点乱,我们是传统的团队,业务导向型的,太 Web 的话,我们又搞不来。
|
22
wzzzx 2020-10-31 22:03:17 +08:00
如果未来会逐渐迁移的话,建议还是 Electon 。
|
23
MasterMonkey OP @beginor 嗯,Windows 和 C#一直用,但是我想用 webview_sharp, 挺轻量级的
|
24
MasterMonkey OP @wzzzx 除了壳,另一个头疼的组件库,web 选择好多,选择恐惧症来了!
|
25
beginor 2020-10-31 22:20:53 +08:00 via Android
@MasterMonkey cef 就是嵌入的 chrome 呀,我们已经在用了, 前端三大框架选一个就行
|
26
MasterMonkey OP |
27
gainsurier 2020-10-31 22:29:18 +08:00 via iPhone
还是 electron 吧,好招人,好迁移。。已经把 qt 和.Net 秒了
|
28
MasterMonkey OP @gainsurier 理解,关键是公司里面 C#+WPF 大把工程师,换成纯 Web 的话,步子还是很大的。但是也明白,Web 绕不开,是终极解决方案。 所以微软 Blazor 这种 C#+HTML+CSS 的方案对我们还挺有吸引力的。
|
29
FreeEx 2020-10-31 22:45:07 +08:00 via iPhone
换个靠谱的 web 工程师很难的,现在很多也都仅仅只是会写页面而已
|
30
missdeer 2020-10-31 23:05:14 +08:00
在大公司用 Qt,但仅限于 Windows 和 Linux,在 mac 上还是用 swift cocoa 写的
|
31
jin7 2020-10-31 23:07:53 +08:00
不是熟悉什么用什么么...
|
32
edk24 2020-10-31 23:12:03 +08:00
跨平台 electron, 不跨平台易语言 /滑稽
|
33
MasterMonkey OP @edk24 易语言,没用过
|
34
dhssingle 2020-10-31 23:40:54 +08:00
新项目可以尝试下 Blazor 。
MAUI 替代的是 Xamarin.Form,这两都是基于 Xamarin,Xamarin 应该会合并到 .NET 6.0 中。 也可以看一下 Uno Platform,也是基于 Xamarin 开发的。 |
35
IDAEngine 2020-11-01 00:18:44 +08:00 via iPhone
electron 足够了,没必要整太复杂
|
36
lxilu 2020-11-01 00:36:50 +08:00 via iPhone
要用 electron 请考虑 miniblink 和 mini-electron, 10M 级
|
37
cszchen 2020-11-01 00:38:32 +08:00
electron + quasar
quasar 一套代码能打包多个平台,封装的还不错,配合 electron 很快出成果 |
38
chengxiao 2020-11-01 00:45:43 +08:00
既然有 Python 的技术栈,当然是 PyQt 喽,也可以跨平台
|
39
wzhy 2020-11-01 01:08:59 +08:00
微软确实喜欢瞎折腾,不知道什么毛病……绑定在它的技术栈上,不一定是好的选择。
|
40
xcstream 2020-11-01 01:47:37 +08:00
electron 最快乐
|
41
jones2000 2020-11-01 02:35:18 +08:00
Windows 上用 C++ MFC, 所有 UI 可以使用 GDI,GDI +,openGL 等绘制.
另外不能因为要多平台而使用一套代码,这样性能很差. 最好是采用代码移植的方法。 |
42
charlie21 2020-11-01 02:50:49 +08:00 1
还是建议 WPF
Electron 这种垃圾玩意五年之后还在不在都不一定了 不要低估 node.js 那帮人的实力 (即使 五年后 Electron 还在,它也不是 2020 年的 Electron 了。 兼容性是什么?倒行逆施。反倒是 你一旦踏上 Electron 这种东西,你就得年年随着它的最新更新而推翻重写。这就是 js 界的阳谋,反正大家都不失业。年年重写嘛谁会失业,那肯定是不肯重写的要失业了 本该用 2022 年的 Electron 了,你还在用 2020 年的 Electron,你肯定失业 你 2018 年写的 Electron app 现在还能跑吗? 不过也不怪 node.js 那帮人,node.js 那帮人就没有考虑兼容性的资格 可是你 2010 年写的 WPF 软件在 2020 年还能跑. |
44
charlie21 2020-11-01 03:03:47 +08:00
为什么没人担心自己会被替换掉呢?就是逐渐把你们替换掉:
只要开始写 Electron 了,写 Electron 的人就是要逐渐把你们写 WPF 的给替换掉。到时候余下的你们不得不陪着 node.js 那帮人年年学新招式,陪他们内卷。这叫引狼入室( 彼时看公司人员构成,WPF 小团队已经被砍掉了,客户端都是写 Electron 的了 而且是年年追着最新版的 Electron ) 被替换的人 自然就担心,替换人的人 自然就不担心,那无知的孩子:她那时候还太年轻,不知道所有命运赠送的礼物,早已在暗中标好了价格。 —— 你就是这价码的一部分,那分不清什么叫 优胜劣汰、引狼入室、良币驱逐劣币、劣币驱逐良币的人 就是这价码的一部分 |
45
quan01994 2020-11-01 06:46:14 +08:00
maui
应该可以 |
46
t6attack 2020-11-01 07:57:47 +08:00
要么向底层+高效迈进,转 QT C++。要么保持 .NET WPF 不动 。如果 PC 客户端很重、略卡。那做客户端的意义又在哪?
|
47
MasterMonkey OP @jones2000 MFC 做 UI 程序生产力太低了吧,这个不好
|
48
MasterMonkey OP @charlie21 嗯,同感,上了 js 的道,就必须天天升级了。
|
49
MasterMonkey OP @charlie21 啥,太深奥?
|
50
MasterMonkey OP @quan01994 这个不太靠谱吧,还在实验,一块大饼!感觉会被坑
|
51
MasterMonkey OP @t6attack 客户端是业务需求了,用什么技术的话,主要是考虑好开发、好维护、方便和设计团队合作
|
52
AndyAO 2020-11-01 09:26:33 +08:00
@MasterMonkey #47
我也有这种感觉 MFC 是个老古董,没记错的话是直接调用 WinAPI 绘制控件之类的,UI 稍微复杂点就效率很低. |
53
h82258652 2020-11-01 09:29:18 +08:00 1
还是要看需求啊,你像 telegram 这种聊天的基本就是网络请求的,用 electron 就很适合。但要做那种工控的,一堆 native 调用的,用 WPF 就适合很多。如果是高性能要求的,例如实时视频直播的,WPF 都不行,只能上 C++。
|
54
UFc8704I4Bv63gy2 2020-11-01 09:38:29 +08:00 via Android
我看了全部是回复,居然没有 delphi c++builder vb,我感到很神奇,认真做一套方案至少可以卖 30 年
|
56
alonehat 2020-11-01 10:25:47 +08:00
用 python 和 node 写桌面应用亏能真的做出来,不追求点开发速度-性能-稳定性的平衡嘛。electron 难用到爆,资源占用不说,开发起来坑就慢慢踩吧,上几个月做个工控没累死,最后砍了,用 wpf 重做。原生的多好不说,.netcore 基本是最前列的高级语言了,还考虑别的跨平台属实没必要
|
57
hotsymbol 2020-11-01 10:29:55 +08:00
最简单的难道不是。全平台切换到 Linux 。这样就不需要再考虑垃圾的 DotNet 了
|
58
cassyfar 2020-11-01 10:40:00 +08:00
推荐这个 Nodejs+Electon
你只需要招一个大佬把架子搭好,之后就是前端编程了,不愁招不到能干的人。 |
59
IsaacYoung 2020-11-01 10:45:28 +08:00
Electron 吧。。。虽然大
|
60
nicevar 2020-11-01 10:48:05 +08:00 1
看需求,如果需求复杂又追求性能的用 Electron 就是往火坑里跳,你们都有资源为啥不选 WPF ?这不没事找虐么,至于你要迁移 Web/Mobile/小程序完全可以用其他方案,没必要把系统差异巨大的东西非要整成一套,结果做出个四不像。即使是 2020 了,那些大型长期使用的应用大多还是 C 、C++的,Electron 开发出来的大多是辅助类的。
|
61
MasterMonkey OP @weiqk 我以为现在没人用了呢
|
62
MasterMonkey OP @alonehat WPF 这个完全赞同,公司用了 10 年了,非常好。现在 Web 火,公司在转型,想留点余地,慢慢引入一些 Web 技术
|
63
MasterMonkey OP |
64
MasterMonkey OP @cassyfar 我们 Team 还没有 Web 前端的氛围,后端工程师为主,需要一些对后端友好的方案,想试下 Blazor
|
65
MasterMonkey OP @nicevar 有资源,但是不富裕。整体团队比较大,我们能使用的资源不多。
|
66
MasterMonkey OP @IsaacYoung 如果程序是一个 Web,直接嵌一个原生浏览器,用浏览器打开应该也可以,省去打包一个浏览器。
|
67
andytao 2020-11-01 11:47:42 +08:00 2
@MasterMonkey 推荐一个方案:
GTK + Vala,写法上和 WPF + C# 类似,原生的,控件组合非常灵活,只要你充满想象力,都可以实现目标; Windows 的支持打包已实现: https://datatable.online/zh/blog/002-how-to-deploy-gtk-app-on-windows.html MacOS 的支持和打包已实现: https://datatable.online/zh/blog/004-how-to-deploy-gtk-app-on-mac.html 有成功经验,不用自己摸索,我用这套技术栈已实现数据库工具,项目网站在这里: https://datatable.online/zh/ |
68
loginbygoogle 2020-11-01 11:52:16 +08:00
如果有 win32 开发基础,当然 flutter,没有的话,什么都无所谓
|
69
qdwang 2020-11-01 12:06:16 +08:00 1
马上.net 5 了,用 Blazor 就完事了,要注意的就是客户端 wasm 里跑的是解释方式运行的代码,性能拉跨,你可以测测看。
等.net 6 里 blazor 支持 aot 了才能解决。 如果对客户端性能要求不高,或者是能等到.net 6 发行,就没问题。 |
70
ebony0319 2020-11-01 12:09:46 +08:00 via Android 1
小团队建议考虑技术风险与成本。选择最成熟的。
|
71
PopRain 2020-11-01 12:13:31 +08:00
我们一直用 C# winform ,后台逻辑 web 也可以复用; 下一步有些界面准备用 Edge WebView2 嵌套 web 试试
|
72
tairan2006 2020-11-01 12:17:12 +08:00
你这个技术栈 最好选 2
|
73
namelosw 2020-11-01 12:25:01 +08:00
很显然 Electron 。
然后有很多人用之后有钱了选啥都行,用别的效率都被吊打,小团队先出货。 |
74
MasterMonkey OP @andytao gtk 太情怀了吧,哈哈
|
75
MasterMonkey OP @qdwang 性能不是第一优先级,主要是要好上手,好迭代,好发布,好维护,后端友好
|
76
MasterMonkey OP @ebony0319 有一定的风险容忍度
|
77
MasterMonkey OP @PopRain 我也想这样干,我试一试
|
78
MasterMonkey OP @tairan2006 python 写界面,感觉不是很有信心
|
79
3dwelcome 2020-11-01 12:55:27 +08:00 via Android
看具体项目需求吧,用 web 界面,是为了写 ui 轻松一点。
可有些传统客户端开发里,界面只占了很小一部分代码,大部分是功能性 cpp 代码,这就没必要迁移了。 |
80
MasterMonkey OP @loginbygoogle 总感觉 flutter 会有一些不好解决的坑
|
81
MasterMonkey OP @3dwelcome 我们这边一半一半
|
82
MasterMonkey OP @andytao 去看了你的神作,确实不错
|
83
wangyzj 2020-11-01 13:54:31 +08:00
1
|
84
MasterMonkey OP @wangyzj 看来 Web 人气是相当的高。现在的场景就是小马过河,看来我的自己试一试了
|
85
xuanbg 2020-11-01 14:23:00 +08:00
vue 什么的没搞过的话,估计还得踩踩坑。没有跨平台需求 wpf 不香吗?
|
86
jeffw 2020-11-01 15:42:34 +08:00 1
|
87
MasterMonkey OP |
88
MasterMonkey OP @xuanbg 大概率将来会跨平台
|
89
xxzs 2020-11-01 17:29:57 +08:00 via Android
Win32 我最喜欢的还是 WTL
|
90
MasterMonkey OP @xxzs 那你肯定很老派,我只想搞定需求、搞定设计、搞定开发早点下班,哈哈哈。
|
91
laminux29 2020-11-01 17:47:06 +08:00
项目技术选型,首先要根据需求来选。
你需求都不说,上面那些老哥却一个劲地推荐各种方案,我也是看笑了。 |
92
opentrade 2020-11-01 18:25:24 +08:00
桌面推荐 sciter,移动推荐 flutter,至少我的项目 https://github.com/rustdesk/rustdesk 选型是这样的
|
93
ragnaroks 2020-11-01 18:32:52 +08:00 1
windows 第一选择是 dotnet(WPF/Avalon),第二选择是 c/c++(MFC/QT...)
其他都是二的选择 |
94
MasterMonkey OP @opentrade 你是又一个推荐 sciter,我去查查
|
95
MasterMonkey OP @MasterMonkey 大概看了下,思路很好。照这个思路,在 dotnet 也行的,我们团队 dotnet 积累比较多
|
96
crayygy 2020-11-01 22:32:57 +08:00 via Android
只有 Windows 个人比较推荐 .NET 平台,不是很推荐 QT,一方面上手难度大,另一个 QT 定制起来比较累,很多东西做起来并不方便。
跨 Web 也许可以考虑 Flutter ?不负责任的推荐…现在 Flutter 应该是可以跨 Web Linux Windows 和 Mac 的,但很细节和具体的我了解不多,所以不做过多推荐 |
97
MasterMonkey OP |
98
MasterMonkey OP @laminux29 兄台你的嘲讽我不完全赞同,技术和方案都会有一些时代特征的,也就是说免不了就那几个选择,一线的朋友提出几个比较好的来讲,说下自己的感受对我还是有帮助的。
|
99
araraloren 2020-11-02 09:11:54 +08:00
QML 如何。。有一个专用的 platform Felgo
可以用 js 或者 c++扩展 |