.NET MAUI 6 正式 GA, maui vs flutter 选哪个?

2022-06-02 17:25:57 +08:00
 livenux

想开发一个跨平台的 gui 应用,不会 c#和 dart ,应该选哪个入手?

4476 次点击
所在节点    问与答
15 条回复
abujj
2022-06-02 17:33:12 +08:00
JS
Mithril
2022-06-02 17:36:15 +08:00
历史早已证明,M$出的 UI 框架都别碰。
lxml
2022-06-02 18:01:04 +08:00
没有性能压力的时候,你可以永远相信 web+js 的方案
dfgxcvbcv
2022-06-02 19:07:04 +08:00
虽然赞同 #2 的观点,但尝试过 Flutter 开发出来的有复杂 UI 的应用太卡了,而且开发体验很差,有空打算尝试 MAUI
mainjzb
2022-06-02 19:09:07 +08:00
flutter 在 windows 端。还不坎重用。多窗口都没有。
Buges
2022-06-02 19:15:29 +08:00
maui 只能用 vs 开发,而 flutter 支持 vscode 。
但 flutter 移动优先,桌面体验不如 web 。
makelove
2022-06-02 20:32:52 +08:00
珍爱生命,远离 .net
wanguorui123
2022-06-02 20:48:33 +08:00
JS
shiganwuguo
2022-06-02 21:10:27 +08:00
maui 只支持高版本的 win10. win7 和低版本 win10 不支持 首先排除。 微软真是搞笑
meetcw
2022-06-02 21:36:36 +08:00
maui 不支持 linux (社区自己搞了一个,不知道哪一年才能用),目前想开发全平台应用还是算了吧。
flutter 在 desktop 下缺少很多功能,不过通过插件勉强也能用。
mooyo
2022-06-02 22:07:13 +08:00
珍爱生命,远离 .net
Yadomin
2022-06-02 22:16:13 +08:00
你永远不知道微软这些新花样什么时候会被砍
ysc3839
2022-06-03 02:16:19 +08:00
个人比较讨厌.NET准确说是讨厌.NET 上的 GUI 框架,因为个人认为.NET 的 GUI 框架破坏了 Windows GUI 的开发体验。
早年的操作系统基本是只提供一套很基础的 API ,比如 Unix ,Win32 虽然有提供 GUI 相关的,但也是比较简陋的。而进入二十一世纪以来,许多操作系统都开始提供更丰富的 API ,比如 macOS 的 Cocoa ,让开发者通过系统内置的 API 就能开发出美观、完善的应用。
但是微软在推出 Windows Vista 时并没有加入现代化的 API ,而是同时推出了基于.NET 的 WPF 。如果.NET 做得好那问题也不大,但是长期以来.NET 不能直接使用 Win32 API ,需要自己手写声明。不同版本的 Windows 系统中.NET 版本不一致,要兼容多个系统版本,要不然给旧系统安装新版本.NET要不然只能用旧版本.NET 来写程序,没法用新特性。再者,WPF 默认主题直到现在都没有和 Win32 的主题统一,Win8 、Win10 、Win11 更新主题后,WPF 那个都显得很难看。
为什么微软要这么搞?我认为,把 WPF 跟.NET 捆绑,是为了拉拢开发者去用.NET ,“你想要爽的开发体验,那就别用 Win32 了,来用.NET 吧”。同时当年因为微软对生态的把控力度不强,Windows 上有很多别的语言 /编译器 /框架,给 Windows 本身加上一套丰富的 API ,很可能被竞争对手拿去发扬光大,所以不内置到系统中,而是独立出来。Windows 内部有一套微软私有的 GUI 框架,资源管理器、任务管理器等许多系统应用都有使用,就是不开放出来。
另一方面,.NET 没法轻松地调用系统 API ,WPF 不使用系统主题,大概是为了跨平台考虑。这么做有好处,可以避免.NET 跟 Windows 捆得太死,比如 Swift 最初推出时基本是 macOS/iOS 专用语言,加上 macOS/iOS 的 API 很丰富,于是很多库就依赖系统 API ,后面 Swift 能跨平台了很难移植。但是很多.NET 用户只是想快速开发一个 Windows only 的应用,想使用一些比较底层、高级的系统 API ,想要有接近原生的 UI 风格,.NET 用起来就很麻烦。这就好比苹果发布 Swift ,写 GUI 只能用 SwiftUI ,不能使用以前 xib 那套,界面风格还和系统不一致,要调用 objc API 要自己声明一遍。
现在新的 WinUI 稍有起色,微软又试图用 MAUI 来分裂了。我认为如果 MAUI 搞起来了,势必会有一堆基于 MAUI 而不是 WinUI 的控件、主题等出现,久而久之就没人给 WinUI 写代码了,都去写 MAUI 的代码了,结果又是跟.NET 捆死。有的人可能会说,那微软自己搞的 React Native for Windows 不也类似吗?确实是这样,但是 React Native 是可以嵌入使用的,可以在现有的 C++或者 C#项目中嵌入一个 React Native 写的基于 WinUI 的界面,而 MAUI 据我所知没有这样的功能,即使要嵌入,.NET 运行时体积也十分庞大。而且 React Native 是用 js 写的,一些底层高性能的操作还是要依赖 C++,没有完全抢走生态的风险,如果换成 MAUI ,可能底层代码也用.NET 写了。
GiantHard
2022-06-04 01:58:17 +08:00
先用最熟悉的技术方案快速做出一版,管用啥技术都行。如果觉得值得投入精力继续做下去,再重构,甚至重写都是可以的
NewYear
2022-06-06 10:05:38 +08:00
@Yadomin

微软也是不断的在适应时代和做努力的尝试,但是奈何编程的方向太大、太多,导致不得不砍掉一些没什么前途的项目倒也不是不能理解的事情。

而每一代项目的增加,也是站在之前的台阶上稳步上升,并不会那么不堪。

但是前路漫漫啊,微软看不清,其实我们自己也看不清,所以只有不断的尝试,不在一棵树上吊死。

我比较不能认同的是微软不支持 Win7 。一方面希望跨平台、开源抢占更多市场,一方面又砍掉自己的手脚送给竞争对手,这就很无奈……程序员也不是自己用的爽了就可以,写出来的程序还是要跑在用户的电脑上……

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

https://www.v2ex.com/t/857003

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

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

© 2021 V2EX