.NETTer,你必须知道——.NET 5是未来!
喜欢就关注我们吧!
.NET 5是.NET的未来
微软在Build 2019大会上宣布了新的.NET 5(.NET的未来)。.NET 5将是用于构建在所有平台(Windows,Linux)和设备(IoT,Mobile)上运行的应用程序的单一统一平台。
如果您是.NET开发人员,目前支持在.NET框架中开发的企业应用程序,那么从长远来看,您需要了解.NET 5将如何影响您当前的企业应用程序。.Net 5基于.Net标准,这意味着并非每个.Net框架功能都可以在.Net5中使用。此外,还有一些技术堆栈,如Web表单,WCF和WWF没有移植到.Net 5.我们将看看 关于.Net 5未涵盖的内容的细节以及有哪些替代方案。
技术堆栈没有进入.NET 5
ASP.NET Web窗体
ASP.NET Web Forms不会出现在.NET 5中,微软目前正在推荐向Blazor迁移,这是一个最近被提升为官方的实验性项目。如果你擅长JavaScript,其他选择是Angular,React和Vue SPA框架。
如果您当前正在使用ASP.NET MVC作为完整堆栈Web应用程序,则可以使用ASP.NET Core MVC或.NET Core 2.0中引入的新Razor页面继续使用相同的堆栈,这可能与ASP类似。NET Web表单,用于快速构建没有视图和控制器的Web表单应用程序。但是,如果您正在为企业开发现代Web应用程序,最好考虑单页应用程序,如Blazor,Angular或React,而不是传统的Web应用程序,以提供丰富的客户端功能。
WCF(Windows Communication Foundation)
WCF将要错过.NET 5列车的消息让很多人感到惊讶,包括我在内。关于将WCF带回.NET Core的GitHub已经有很多讨论,但微软决定不这样做,因为他们最初估计将WCF移植到.NET Core是三年。
Microsoft建议使用gRPC作为替代方案,它是一种可在任何环境中运行的现代化,开源,高性能的RPC框架。但是,与WCF不同,gRPC目前无法在IIS中托管,因为Http.Sys的HTTP / 2实现不支持gRPC依赖的HTTP响应尾随标头
WWF(Windows Workflow Foundation)
Workflow Foundation没有移植到.NET Core中。每个企业应用程序都将具有一些与其集成的工作流程或BPM工具。如果您在应用程序中使用了WWF,Microsoft建议您查看WF运行时的非官方分支以移植到.NET Core中。
即将到来的技术堆栈5
Winforms,WPF和UWP
微软正在推出Windows桌面包(winforms,WPF和UWP),以支持仅适用于Windows的桌面应用程序。我不希望任何人使用winforms进行任何新的开发,但是,这将有助于将传统的winforms应用程序移植到.NET5.这并不意味着.NET Core的架构正在发生变化。它仍然是一个跨平台的框架,但是当您添加桌面包时,它的目标是仅在Windows上工作。但是,将现有Windows桌面应用程序移植到.NETCore中可以提供Core Runtime和API性能改进以及部署灵活性的额外好处。
什么被取代了
EF核心 - 实体框架核心正在取代.NET核心框架中的EF 6。
ASP.NET核心 - ASP.NET被ASP.NET核心取代。查看迁移指南,将ASP.NET应用程序移植到ASP.NETCore中。
ASP.NET Core MVC - ASP.NET Core MVC统一ASP.NET MVC和Web API。查看迁移指南,将asp.net mvc app移植到ASP.NETMVC中。
MSIX - Microsoft的新打包工具,它取代了桌面应用程序的旧MSI包安装程序。
JsonDocument - 来自System.Text.Json.JsonDocument API的新Json Document库将取代json.net。它比旧的json.net快2-3倍。
其他重要事项要突出
最新版本的C#8.0引入了许多新的语言功能,包括Async Stream,Ranges,Nullable Reference Types和Pattern Matching。但是,它们将仅在.NET Core 3.0及更高版本上可用,这意味着它不会进入旧版.NET Framework或.NET Core 2.2,2.1或1.0。它清楚地表明.NET已经死了,.NET Core就是未来。
如果您计划将.NET应用程序移植到.NETCore中,则必须分析项目中使用的API以查看兼容的内容。.NET Portability Analyzer是一个有助于分析和确定应用程序在.NET平台上的灵活性的工具。
作为.NET开发人员,我对.NET的未来及其发展方向感到兴奋。我不再需要为SPA框架学习JavaScript,因为Blazor会这样做。 我不再需要学习Python用于机器学习,因为ML.NET会这样做。我不再需要学习Android或Swift,因为Xamarin会这样做。 如果您了解C#,那么现在您可以开发一个可以从IoT到Cloud运行的应用程序。 但是,这种变化将影响许多拥有基于WCF和Web窗体的产品/框架的企业客户。