如您所知,Microsoft 收购了 Xamarin,并且现在负责 Mono 的持续开发。此外,他们将在 11 月发布 .NET 5,这是 .NET Framework 的跨平台继任者。他们说 ASP.NET Core 将是唯一的 ASP.NET 框架,并且他们正在放弃对 Web 窗体的支持。
当这种情况发生时,Mono 框架是否也会放弃 Web 表单,还是会继续开发?
如您所知,Microsoft 收购了 Xamarin,并且现在负责 Mono 的持续开发。此外,他们将在 11 月发布 .NET 5,这是 .NET Framework 的跨平台继任者。他们说 ASP.NET Core 将是唯一的 ASP.NET 框架,并且他们正在放弃对 Web 窗体的支持。
当这种情况发生时,Mono 框架是否也会放弃 Web 表单,还是会继续开发?
当这种情况发生时,Mono 框架是否也会放弃 Web 表单,还是会继续开发?
简短的回答是肯定的,他们也会放弃 Web 表单。您应该考虑弃用 Web 表单——无论是在 .NET 5 还是即将推出的 Mono 运行时版本方面。您将继续能够在传统版本的 Mono 和 .NET Framework 上运行 Web 窗体(至少在您现在能够做到的范围内),但这种支持不会被带到未来的版本中。
为了更好地理解这一点,了解 .NET 5、CoreBCL、CoreCLR 和 Mono 之间的关系很有用。这变得有点模糊,因为 CoreCLR 现在可以跨多个平台工作,因此与以前由 Mono 处理的大部分领域重叠。
在高层次上,.NET 5 将利用新统一的 .NET Core 基类库(或.NET Core BCL)。该 BCL 将取代以前由各种 .NET 实现(包括 Mono)处理的许多类库。然而,在大小优先于性能的环境中,例如移动和 WebAssembly,Mono 将继续用作 .NET 5 的运行时。相比之下,更快(但更大)的 CoreCLR 将(继续)用于其他环境,例如桌面和 Web 服务器应用程序。.NET Core BCL 将在这些运行时之上运行。
换句话说,在 .NET 5 中,不会像今天那样为 Mono 提供单独的类库。一切都将使用相同的基类库。而且,除此之外,您还将拥有其他类库,例如 ASP.NET、WPF、Xamarin 等。这将完全独立于他们使用的运行时。结果,由于 ASP.NET Core 5 不支持 Web 窗体,这意味着 Mono 也不支持,因为它们现在将使用完全相同的类库。
InfoQ 上有一篇对 Miguel de Icaza的精彩采访,值得一读,以更好地了解 Mono 运行时的方向以及它与 .NET 5 的关系。(Miguel 是 Mono 的原作者,Xamarin 的联合创始人,并继续直接Mono开发。)它没有专门讨论Web Forms,但很好地阐明了Mono和.NET 5之间的关系。
另一个答案。“当这种情况发生时,Mono 框架是否也会放弃 Web 表单,还是会继续开发?” 如果要放弃 Mono,那么您的问题可能会变得完全无效。
回滚到 200 倍。Mono 最初确实支持 ASP.NET WebForms,但那时 ASP.NET 1.x/2.x/3.x 很容易克隆,Mono 团队在其他部分几乎没有什么可做的。我个人认为那是 ASP.NET 在 Mono/Linux 上的黄金时期。然而,当 ASP.NET 4.x 带来许多重要的变化(异步模型等)时,差距开始出现,而且许多从未被填补(因为团队将注意力转移到移动平台上)。
我不知道你今天是如何在 Mono 上使用 WebForms 应用程序的,但如果你是一个认真的用户,你可能已经遇到了很多问题,并且知道情况有多困难。因此,您不应真正将 Mono/Linux 视为运行 WebForms 应用程序的生产级环境,而应回到 .NET Framework/Windows,或完全迁移到 ASP.NET Core。
Xamarin 的兴起和微软的收购极大地改变了 Mono 的格局,因此 Xamarin 产品(Mono CLR 和 BCL)使用的所有东西都在不断更新,其他东西(包括 MonoDevelop、GTK#、XSP 和 ASP.NET WebForms)也在不断更新。被留下来。由于只有 Mono CLR 被转移到 .NET 5,这可以看作是 Mono 的终结。
当然,开源项目不会轻易消亡。例如,从 2020 年 2 月开始,MonoDevelop 已经停产,但有一群人试图复兴它(包括我)。但是Mono 能走多远还不清楚也不可靠。
米格尔目前对未来持乐观态度,但并非所有人都这么认为。