V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
livenux
V2EX  ›  问与答

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

  •  
  •   livenux · 2022-06-02 17:25:57 +08:00 · 4487 次点击
    这是一个创建于 911 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    15 条回复    2022-06-06 10:05:38 +08:00
    abujj
        1
    abujj  
       2022-06-02 17:33:12 +08:00
    JS
    Mithril
        2
    Mithril  
       2022-06-02 17:36:15 +08:00
    历史早已证明,M$出的 UI 框架都别碰。
    lxml
        3
    lxml  
       2022-06-02 18:01:04 +08:00 via Android
    没有性能压力的时候,你可以永远相信 web+js 的方案
    dfgxcvbcv
        4
    dfgxcvbcv  
       2022-06-02 19:07:04 +08:00
    虽然赞同 #2 的观点,但尝试过 Flutter 开发出来的有复杂 UI 的应用太卡了,而且开发体验很差,有空打算尝试 MAUI
    mainjzb
        5
    mainjzb  
       2022-06-02 19:09:07 +08:00
    flutter 在 windows 端。还不坎重用。多窗口都没有。
    Buges
        6
    Buges  
       2022-06-02 19:15:29 +08:00 via Android
    maui 只能用 vs 开发,而 flutter 支持 vscode 。
    但 flutter 移动优先,桌面体验不如 web 。
    makelove
        7
    makelove  
       2022-06-02 20:32:52 +08:00
    珍爱生命,远离 .net
    wanguorui123
        8
    wanguorui123  
       2022-06-02 20:48:33 +08:00
    JS
    shiganwuguo
        9
    shiganwuguo  
       2022-06-02 21:10:27 +08:00
    maui 只支持高版本的 win10. win7 和低版本 win10 不支持 首先排除。 微软真是搞笑
    meetcw
        10
    meetcw  
       2022-06-02 21:36:36 +08:00
    maui 不支持 linux (社区自己搞了一个,不知道哪一年才能用),目前想开发全平台应用还是算了吧。
    flutter 在 desktop 下缺少很多功能,不过通过插件勉强也能用。
    mooyo
        11
    mooyo  
       2022-06-02 22:07:13 +08:00
    珍爱生命,远离 .net
    Yadomin
        12
    Yadomin  
       2022-06-02 22:16:13 +08:00 via Android
    你永远不知道微软这些新花样什么时候会被砍
    ysc3839
        13
    ysc3839  
       2022-06-03 02:16:19 +08:00 via Android   ❤️ 2
    个人比较讨厌.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
        14
    GiantHard  
       2022-06-04 01:58:17 +08:00 via Android
    先用最熟悉的技术方案快速做出一版,管用啥技术都行。如果觉得值得投入精力继续做下去,再重构,甚至重写都是可以的
    NewYear
        15
    NewYear  
       2022-06-06 10:05:38 +08:00
    @Yadomin

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

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

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

    我比较不能认同的是微软不支持 Win7 。一方面希望跨平台、开源抢占更多市场,一方面又砍掉自己的手脚送给竞争对手,这就很无奈……程序员也不是自己用的爽了就可以,写出来的程序还是要跑在用户的电脑上……
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2586 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 01:35 · PVG 09:35 · LAX 17:35 · JFK 20:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.