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