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

目前 Window 平台主推的 UI 技术到底是啥?

  •  
  •   dk7952638 · 2021-01-27 14:48:37 +08:00 · 6439 次点击
    这是一个创建于 1429 天前的主题,其中的信息可能已经有所发展或是发生改变。

    考虑开发一个原生的 Win 平台 App,一调研技术傻眼了 Winform WPF 已死 UWP 半死不活 Xamarin 即将绝响 俩新玩意 MAUI WinUI3,但好像都还是早期阶段 试问 Win 平台就没有一个可以和 SwiftUI,Jetpack 媲美的原生框架吗?

    33 条回复    2021-01-28 22:27:09 +08:00
    h82258652
        1
    h82258652  
       2021-01-27 14:51:27 +08:00
    WinUI,然而这玩意至少要等三月份 0.5 版出来才能用。
    ysc3839
        2
    ysc3839  
       2021-01-27 15:03:45 +08:00 via Android   ❤️ 3
    Win32 平台长期以来都没有什么主推的 UI 框架的,MFC 曾经可能算,但是很多年前就停止加入新功能了。
    Windows 内部有个 DirectUI 框架,可惜是私有的。
    WPF 虽然是平台相关,但是跟语言捆死,我觉得在 Windows 这种较为开放的平台上算不上系统级的框架,只能说是语言级别的。(虽然 macOS 中 UI 框架也是跟 objc 和 Swift 捆死,但相比之下 macOS 没那么开放,连大部分系统 API 都是和 objc 捆死的。而 Windows 的 API 基本上都是可用 C 语言调用,某种意义上并不和语言绑定)
    后面 UWP 出来之后 Windows 有了系统级的 Windows.Xaml.UI ,不过长期以来仅限于 UWP 应用使用,直到最近才开放给 Win32 。
    q197
        3
    q197  
       2021-01-27 15:10:50 +08:00
    期待 winui3 maui 这些。其实现在大家希望的是跨平台,小文件,后端性能还行的解决方案。net5+maui 可能可以火。winui 也不错,uwp 的界面(更重要的是支持触摸手势、手柄等特殊输入),win32 的权限。
    wanguorui123
        4
    wanguorui123  
       2021-01-27 15:10:55 +08:00
    Windows 平台的原生开发越来越小众了,我以前是搞 WinForm/WPF 的,现在能不用原生就不用
    ysc3839
        5
    ysc3839  
       2021-01-27 15:15:07 +08:00 via Android
    对于 Win32,还是以 POSIX 的角度去看待吧,基本上可以认为是类似 POSIX 这种系统底层功能,加上简单的界面功能,还是上个世纪的设计思路。和 21 世纪的 macOS, Android 这种“丰富 API”的系统没有可比性。
    QBugHunter
        6
    QBugHunter  
       2021-01-27 15:17:47 +08:00   ❤️ 4
    《 windows 编程革命简史》

    这篇文章可以参考下,合适微软一贯的作风
    paradoxs
        7
    paradoxs  
       2021-01-27 15:18:22 +08:00
    没推的了。。 用电脑的人越来越少了。 全部绝迹早晚的事
    AndyAO
        8
    AndyAO  
       2021-01-27 15:19:19 +08:00
    "WPF 已死"的结论是从哪里来的?
    dk7952638
        9
    dk7952638  
    OP
       2021-01-27 15:19:29 +08:00
    @ysc3839 专业啊,那请问你们现在 Win 平台主要用啥技术呢
    dk7952638
        10
    dk7952638  
    OP
       2021-01-27 15:20:52 +08:00
    @QBugHunter 这文章写的真好
    mosfet
        11
    mosfet  
       2021-01-27 15:24:36 +08:00
    那就 Qt 好了
    AndyAO
        12
    AndyAO  
       2021-01-27 15:26:56 +08:00
    经常能看见这种问题,抛出比较惊人的说法,问问大家的意见是什么样子的,但是对于那个说法,本身却没有给出任何的证据。

    知乎上经常会说「先问有没有」,我觉得这是说的很好的。

    WPF 刚更新了,而且.NET5 也是支持 WPF 的,没有理由说已经死了。

    等到已经不更新了,甚至官方直接明说放弃支持了,那个时候再说死了这种话,那样才对吧。
    ysc3839
        13
    ysc3839  
       2021-01-27 15:39:24 +08:00 via Android
    @dk7952638 我只是业余玩玩……并不专业。
    要我推荐的话,我大概会推荐 Qt 。
    如果不考虑兼容旧系统的话 (至少 Win10 1903),可以试试 UWP 那个 XAML UI,但是相关资源应该会比 Qt 少很多。
    愿意学 C# 那套的话选 WPF 也行,不过我自己还是偏好 C++。
    Chenamy2017
        14
    Chenamy2017  
       2021-01-27 15:54:41 +08:00
    原生的不指望,推荐 Qt 。
    不过我现在用 Electron 。
    love
        15
    love  
       2021-01-27 16:56:58 +08:00
    @AndyAO 新开发的项目你去用一个不是人家发展方向上的库,即使目前还没死透又有什么意义?一定要等二年死透了你再重写软件?
    SWALLOWW
        16
    SWALLOWW  
       2021-01-27 17:02:29 +08:00
    wpf/winform 在线接活,我觉得没有死,windows 应用最快最全面就是这两个,wpfui 还多,好看,以后也支持,至少中国主流非互联网公司搞 windows 的有一大部分。
    另外从支持的角度,不外乎 windows 系统,windwos 不外乎.net framework,只要这个不变,就算 wpf100 年不更新有关系吗?
    CallMeReznov
        17
    CallMeReznov  
       2021-01-27 17:06:48 +08:00
    最近用 winform 写了几个小工具,突然想喊一句 winform 天下第一!
    托就完事了!
    across
        18
    across  
       2021-01-27 17:12:28 +08:00 via iPhone
    想问问这个调研怎么做的。和移动端 web 端问他们 windows 用啥 ui 框架?
    muraku
        19
    muraku  
       2021-01-27 18:35:00 +08:00 via iPhone   ❤️ 1
    目前微软正式版的技术中最先进的应该就是 winui2+uwp 了
    Tink
        20
    Tink  
       2021-01-27 18:49:20 +08:00 via Android
    qt 吧
    ylqhust
        21
    ylqhust  
       2021-01-27 19:31:47 +08:00   ❤️ 1
    libcef+react
    fiveelementgid
        22
    fiveelementgid  
       2021-01-27 20:22:26 +08:00 via Android
    四个字母的 MAUI ?记不太清了
    现在的话
    可以考虑一下 Blazor
    luchong
        23
    luchong  
       2021-01-27 20:38:26 +08:00
    @fiveelementgid Blazor 这玩意貌似是针对 web 的 桌面端 WPF 挺香的 不过微软想主推 uwp 但 uwp 条件有点苛刻 win101803 版本以下的不支持 相对来说 WPF 目前算是比较成熟的解决方案了 MAUI 理论上是整合了 Xamarin
    Devin
        24
    Devin  
       2021-01-27 20:59:26 +08:00 via Android
    wpf 的创作者真是天才,如果不是移动端趋势,微软能继续打磨 wpf 就好了
    dk7952638
        25
    dk7952638  
    OP
       2021-01-27 21:34:33 +08:00
    @luchong UWP 还能续命么,感觉要放弃的节奏呢
    12101111
        26
    12101111  
       2021-01-27 22:29:01 +08:00
    @dk7952638 微软最新的 Windows10 X 系统原生 GUI 只有 UWP, 其他 UI 一律容器(轻量级虚拟机)里跑
    danieladu
        27
    danieladu  
       2021-01-27 22:39:46 +08:00 via Android
    electron
    cmdOptionKana
        28
    cmdOptionKana  
       2021-01-27 23:45:00 +08:00 via Android
    现在用 Mac 的人不少了,所以一般都考虑跨平台方案。
    mmdsun
        29
    mmdsun  
       2021-01-28 00:14:24 +08:00 via Android
    https://developer.microsoft.com/zh-cn/windows/get-started-windows-10/

    Windows UI (WinUI) 库和 Project Reunion 是最新技术。
    nerocc
        30
    nerocc  
       2021-01-28 07:04:33 +08:00 via Android   ❤️ 3
    楼主应该先分清不同的术语和种类。
    WPF,WinForm 是框架。
    UWP,Win32 是 App Model 。
    WinUI 是 UI 技术。
    你做 WinUI 既可以选择 UWP 的 App Model,也可以选择 Win32 的,UWP 的 WinUI 目前 2.x 功能最成熟。Win32 的话只能等 Project Reunion 的 WinUI 3.0 出来。语言既可以用 C#也可以用 C++。C#的话,UWP 的 App Model 会是.NET Native,Win32 会是.NET 5+。C++的话 UWP 是 WinRT,Win32 理论上应该是啥都行的。
    dk7952638
        31
    dk7952638  
    OP
       2021-01-28 10:59:42 +08:00
    @nerocc 谢谢解答,真专业,请问 UWP 和 win32 的 WinUI3 可以一套代码互相转换吗
    fiveelementgid
        32
    fiveelementgid  
       2021-01-28 17:27:36 +08:00 via Android
    @luchong Blazor 好像有 Web API pattern,差不多
    nerocc
        33
    nerocc  
       2021-01-28 22:27:09 +08:00 via Android
    @dk7952638 暂时不可以,Project Reunion 就是朝向这个目的走过去的,今年底只能做到 Win32 的 WinUI 3 。剩下的要等明年.NET 6 适配 UWP 。但是目前最成熟的 WinUI 技术都在 2.x 的 UWP 里。所以你要是不需要 Win32 权限,官方最推荐直接写 UWP 。如果你需要 Win32 权限,可以用 XAML Island 在 Win32 里面 host UWP 的 UI 。当然除此之外还有 React Native for Windows 。然后今年 Rust 应该也快要可以写 WinUI 的应用了。Rust for Windows 刚刚做到了能创建 COM,所以下一步就是可以跟 XAML 交互了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1722 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 16:37 · PVG 00:37 · LAX 08:37 · JFK 11:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.