目前 .NET Core 3.0 拥有的 API 总数约为 .NET Framework API 的 80%,剩下尚未从 .NET Framework 移植到 .NET Core 的 API,微软考虑以开源的形式发布。
微软方面表示,通过 .NET Core 3.0,他们现在已具备轻松移植现代 workload 所需的所有技术,无论是桌面应用、移动应用、控制台应用,网站还是云服务。为此,他们计划将不再把 .NET Framework 上已有的技术移植到 .NET Core 3.0,并考虑使用 MIT 协议来开源不打算移植到 .NET Core 3.0 的 .NET Framework 代码库。
当然不移植 API 并不是说我们在使用新技术方面没有任何机会,只是这些技术不会在 .NET Framework 代码库中出现。
下面我们来看看 .NET Core 和 .NET Framework 的发展历程。
从 .NET Core 1.0 开始,它只有一个非常小的 API 集合,其中仅包含大约 1.8 万个 .NET Framework API。通过 .NET Standard 2.0,微软试图在 .NET Framework, .NET Core 和 Xamarin 之间共享代码,因此 .NET Core 2.0 提供了大约 3.8 万个 .NET Frameworks API。此外,微软还构建了兼容性套件包 —— Windows Compatibility Pack,而该套件包又让 .NET Core 增加了大约 2.1 万个 .NET Framework API。至此,前后大约有 6 万个 API 移植到了 .NET Core。
而在最新发布的 .NET Core 3.0 中,微软又增加了 WPF 和 WinForm,因此将 .NET Framework API 移植到 .NET Core 的总数超过了 12 万,比 .NET Framework API 总数量的一半还多。
这里还需要指出的是,微软特意强调他们在 .NET Core 中添加了大约 6.2 万个 .NET Framework 中没有的 API,因此如果仅比较 API 的总数,那么 .NET Core 的 API 数量约占 .NET Framework API 的 80%。
微软表示 .NET 的未来将基于 .NET Core,在 Build 2019 大会上,微软宣布 AppDomains、远程处理、Web Forms、WCF server 以及 Windows Workflow 都不会移植到 .NET Core。目前也不再计划将任何 .NET Framework 技术移植到 .NET Core 上。前面提到微软会开源不打算移植到 .NET Core 3.0 的 .NET Framework 代码库,希望借此为社区创造更多 OSS 项目尽一份力量。
例如,目前已经有两个基于此的社区项目诞生 —— CoreWF 和 CoreWCF。