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

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

  •  
  •   dk7952638 · 307 天前 · 3924 次点击
    这是一个创建于 307 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    33 条回复    2021-01-28 22:27:09 +08:00
    h82258652
        1
    h82258652   307 天前
    WinUI,然而这玩意至少要等三月份 0.5 版出来才能用。
    ysc3839
        2
    ysc3839   307 天前 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   307 天前
    期待 winui3 maui 这些。其实现在大家希望的是跨平台,小文件,后端性能还行的解决方案。net5+maui 可能可以火。winui 也不错,uwp 的界面(更重要的是支持触摸手势、手柄等特殊输入),win32 的权限。
    wanguorui123
        4
    wanguorui123   307 天前
    Windows 平台的原生开发越来越小众了,我以前是搞 WinForm/WPF 的,现在能不用原生就不用
    ysc3839
        5
    ysc3839   307 天前 via Android
    对于 Win32,还是以 POSIX 的角度去看待吧,基本上可以认为是类似 POSIX 这种系统底层功能,加上简单的界面功能,还是上个世纪的设计思路。和 21 世纪的 macOS, Android 这种“丰富 API”的系统没有可比性。
    QBugHunter
        6
    QBugHunter   307 天前   ❤️ 4
    《 windows 编程革命简史》

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

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

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

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

    Windows UI (WinUI) 库和 Project Reunion 是最新技术。
    nerocc
        30
    nerocc   306 天前 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   306 天前
    @nerocc 谢谢解答,真专业,请问 UWP 和 win32 的 WinUI3 可以一套代码互相转换吗
    fiveelementgid
        32
    fiveelementgid   306 天前 via Android
    @luchong Blazor 好像有 Web API pattern,差不多
    nerocc
        33
    nerocc   305 天前 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   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3084 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 10:29 · PVG 18:29 · LAX 02:29 · JFK 05:29
    ♥ Do have faith in what you're doing.