我们在 5 月报道过微软希望在.NET Core 3.0 上运行 WinForms 和 WPF。为了实现这个目标,他们正在构建一个新工具,该工具将允许你投票以决定他们需要把哪些 API 移植到.NET Core。但是,这不是一次直接进行的投票,而是基于你的应用程序正在使用的 API 进行的。
他们为此开发的工具叫作可移植性分析器(Portability Analyzer)。该工具的前几个版本被用于对控制台和ASP.NET 应用程序所需功能进行投票。在运行该工具的GUI 版本时,你需要选择一个目录。如果你粘贴的文件的文件名后缀为exe 和dll,那么分析器就不会正确运行。
需要提醒的是,WinForm 和WPF 不会在此计划下实现跨平台。这个计划的目的是让Windows 开发人员能够从.NET Core 的部署和性能提升中获益。
当然,这并不是说从长期来看跨平台的UI 是不可能的。他们可能会把 WinForm 的 Mono/Linux 版本移植到.NET Core ,或者基于 XAML 的 Avalonia 项目可能会越来越受欢迎。当然,从开发人员对.NET Core 3.0 公告的评论中还是可以看到人们对可用跨平台 GUI 是很感兴趣的。
目前还没有在考虑中的 API 的完整列表,不过 Immo Landwerth 分享一些信息:
从高层面来说,我们已经决定:
.NET Core 不会包含 Remoting;
不会在.NET Core 上启用部分信任 /CAS/ 沙箱操作;
不会在.NET Core 3.0 中引入 System.Web、WF 和 WCF 托管,但是,这取决于用户反馈。
我认为,几乎所有其他因素都取决于有多少人受其影响,以及我们是否能在.NET Core 3.0 中实现。
在评论中,开发人员列举了一些他们最想要的 API。Jan Friedirch 写道:
WCF 托管是把我们的应用程序移植到.NET Core 唯一缺失的东西。我们有 15 个不同的托管 WCF 的应用程序。
Ryan 回应刚才的说法:
我的大多数应用程序都没问题,但是唯一缺失的东西就是 WCF。我知道,这个还在讨论中,因此,我会全力支持它。现在,我使用双向 TCP 在一个客户端应用程序和一个远程会话中的应用程序之间进行通信。我可能会把它切换到 websocket 实现,但我希望不会立即在这上面耗费太多资源(尽管我已经在考虑这么做,因为有一个功能请求需要对服务定义进行重大修改)。
InfoQ 将在下周对服务器端 WCF 的辩论进行全面的报道。
查看英文原文: https://www.infoq.com/news/2018/08/Core-3-Portability-WPF-WinForms
感谢无明对本文的审校。
评论