微软“大统一”的梦还没有破灭……

在发布 Windows 10 的时候,微软曾经有一个非常伟大的梦想 —— 让所有设备都能运行 Windows 10,并依赖这样的通用性打破设备与设备之间的壁垒。

微软“大统一”的梦还没有破灭……

为了实现这个梦想,微软拿出了 UWP,拿出了 Windows Continuum,在 Xbox One 上,微软也给其安装上了定制的 Windows 10,同时曾经的 Windows Phone 也进化成了 Windows 10 Mobile。

一切看起来很美好,这一下 PC、Xbox、手机都已经有了,对于那些小巧的物联网设备,微软甚至还准备了 Windows 10 IoT。当时,Windows 10 可以说是已经完成了对多种设备的全面覆盖。

然而,以上都是微软的在发布 Windows 10 初期做的梦。

现实是这样的:

UWP 并没有随着 Windows 10 的推出火起来,即使微软给 UWP 提供了非常多的支持,但 UWP 一直不温不火。

Windows 10 Mobile 已经被微软宣告死亡,微软正在试图用其他的方式打通 Windows 和用户的 Android、iOS 设备。

Windows IoT 属于 Windows 10 的一个专版,它对开发者并不友好,而且对设备的支持很有限,这个版本的 Windows 10 在推出之后并没有掀起什么波澜,直接石沉大海。

微软“大统一”的梦还没有破灭……

在知乎上,相关的话题下问题数量不过 30 个,关注者也少得可怜。

微软的这个想法并不是不可行的,他们已经让 Windows 10 具备了一定的通用性,并提供了 UWP 这个平台,但遗憾的是微软并没能用这样的 Windows 10 撼动手机、嵌入式设备上那些早已成熟、稳定下来的生态,这些平台上的 Windows 10 反而是被这些生态给淘汰掉了。

至今,Windows 10 主要还只是被应用在 PC、Xbox 这一亩三分地上,随着 Windows 10 Mobile 的死亡,微软已经不具备通过操作系统实现「大统一」的基本条件了。

这也正是为什么现在微软反过来面向 Android 和 iOS 开发应用,通过「Your Phone」这样的应用来使其与 Windows 10 互联。

不少人认为,微软的「大统一」已经失败了,不论微软有多强的技术实力,其他平台的稳固生态也不允许微软去实现他们这一伟大的梦想。事到如今,微软应该放弃掉这个想法,着重去提升、优化 Windows 10 在 ARM 上的表现,利用 ARM 笔记本稳固 Windows 10 在 PC 领域的地位。

然而在之前召开的 Build 2019 上,微软给了我们一个截然相反的答案。

微软“大统一”的梦还没有破灭……

对于 UWP 和 Microsoft Store,微软明确表示他们会继续提供支持,并不会因为 UWP 遇冷、Microsoft Store 无人问津就把他们关闭。

在微软眼中,他们仍然希望开发者能从 Win32 转移到 UWP 上,他们仍然想要实现让开发者能够轻松开发跨平台应用、使用所有平台功能的终极目标。

目前微软也意识到了开发者对 UWP 的兴致十分一般,很多开发者并不愿意为 UWP 开发应用,不想向 UWP 这一方向转移。这样的情况使得微软难以消除 Win32 应用和 UWP 应用之间的鸿沟,如果开发者始终不愿意为 UWP 开发应用,那么 UWP 的生态将很难完善。

对此微软表示他们正在打算推进「Windows Apps」这一工作,这项工作将帮助微软缩小 Win32 和 UWP 应用之间的差距,最终促使开发者全面转移到 UWP 应用上。

这一项工作主要分类两点,第一是在概念上消除 Win32 应用和 UWP 应用的区别,只要这个应用能够运行在 Windows 上,那么它就是一个「Windows 应用」,不再有 Win32 和 UWP 之分。

第二是微软正在将 UWP 解耦,最终 Win32 的开发者能够访问和使用到越来越多原先只属于 UWP 的功能,开发者甚至可以利用 UWP 的打包 API 来打包 Win32 应用。

除了这方面的工作外,微软在开发工具上也有在向这一方向改良。在 Build 2019 上,微软推出了 .NET 5,它将接班 .NET Core 3.0,主推跨平台开发。

微软“大统一”的梦还没有破灭……

现在的 .NET 仍然有 .NET Core 和 .NET Framework 之分,但在 .NET 5 时代,.NET 只有一个,不论你开发的是什么类型应用程序,它们都将使用同一套框架,每个应用访问的都是相同的运行时、API 和语言功能。

.NET 5 的通用性是其一大亮点,你可以利用它开发相当多类型的应用程序,桌面应用、Web、云、移动端、游戏、物联网、AI 它都支持。.NET 5 将会拥有更多的 API,丰富的 API 将会进一步简化开发者的开发流程,降低应用的开发难度。

由于 .NET 5 实际上是接班 .NET Core 3.0,所以它将继续保留 .NET Core 的优良特性,例如跨平台、高性能、并排安装、兼容 CLI 等等。

.NET 5 将会成为一个相当强劲的开发平台,而且它和微软的「大统一」梦想非常贴近,因为利用 .NET 5 你能够开发相当多类型的应用程序,随着 .NET 体系的不断进步,它能支持的东西将变得越来越多。

.NET 5 实际上是换了个名字的 .NET Core 4.0,微软在未来主推 .NET 5 意味着 .NET Framework 这一系旧 .NET 时代已经走向了终结,而 .NET Core 成功上位成为了微软的新宠儿。值得一提的是,.NET 5 支持 Web Assembly,随着浏览器应用越来越广泛,Web Assembly 有可能在未来得到大规模的普及,而 .NET 则有可能借助这一波热潮焕发又一春。

微软大体上是在推着 .NET 往统一、通用的方向走,对于未来来说这是一件好事情,像 Python、Java 都存在着生态上的割裂,这样的生态割裂限制了整个体系向前快速推进。

除此之外,.NET 5 实际上还做了与其他生态的融合,微软有提到它将支持与 Java、Objective-C 和 Swift 之间的互操作,这将进一步提升 .NET 在移动开发上的应用面。

微软“大统一”的梦还没有破灭……

.NET 5 的遗憾在于微软还并没有在它上面实现真正的跨平台 UI 开发,像 WPF 这样的宝贝仍然是只有 Windows 才能使用的东西,笔者比较期待在未来的 .NET 上微软能够实现真正的跨平台 UI 开发。

对于微软而言,.NET Core 这一体系的发展还是太晚了一些,如果微软能够早一些开始做 .NET 的跨平台,那么其生态发展到现在将相当繁荣。


微软通过 Build 2019 清晰地告诉了我们,他们「大统一」的梦并没有结束,所有的努力也还没有就此化成泡沫,相反,他们仍然在追求统一与通用,并为此做了很多的努力。

虽然说最终微软的「大统一」可能不会以他们之前想的那样实现,但最终微软实现的「大统一」将不会让用户和开发者失望,相反,它会以一个更高的高度给用户和开发者带来更多的便利。