.NET Framework4.6、.NET本机和.NET Core之间的差异是什么?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (28)

几乎在每个.NET框架讨论中我都会看到以下内容:

  • .NET Framework 4.6(完整的.Net框架)
  • .NET Native
  • .NET核心

所有这些有何区别?

我如何知道何时使用合适的?

提问于
用户回答回答于

在浏览各种链接和视频后,我发现一个有趣的图片:

从上面,我们可以很容易推断出以下几点:

  • .NET Framework 4.6是与.NET相关的一切的完整框架,但缺少针对多平台(Windows,Linux和Mac)和云部署进行优化的库和运行库
  • 另一方面,.NET Core是.NET Framework 4.6的一个子集,主要针对多平台和云部署进行了优化
  • .NET Native主要用于开发通用应用程序,该应用程序将在本地运行在任何设备和平台上进行相当优化(不适用于Web应用程序)

ASP.NET有趣的一点是:

  • 如果我们需要最大限度地向后兼容(比如web表单或aspx支持),我们需要使用.NET Framework 4.6
  • 如果我们开发MVC,Web API或Razor网页,那么我们可以在.NET Framework 4.6或.NET Core环境中部署这些Web应用程序
用户回答回答于

TLDR:如果它是Core,它是功能的一个子集,所以它可以跨平台运行。可以在Core上运行的所有内容都可以在Windows的完整4.6框架中运行。

.NET Framework v4.6 - 只能在Windows上运行的完整框架。但是,因为这是完整的框架,这意味着可以获得WCF,WPF和所有功能。可以将其视为今天可能正在进行的常规.NET Windows开发。它包括ASP.NET WebForms,MVC,Core和SignalR。如果今天使用.NET 4.5,这是下一个自然升级途径。

.NET Core - 一个子框架,不包括完整4.6框架中的所有内容。但是它的目的是在Windows,Mac或Linux上运行跨平台。但是,确实会失去一些功能,例如WCF,WPF。但是你仍然有ASP.NET Core(没有WebForms),但是还没有SignalR。SignalR支持旨在用于更高版本。这使用dotnet CLI(命令行界面)编译应用程序,或者如果您在Windows上,则可以使用Visual Studio。

.NET Native - .NET Core框架的本地编译。不是在运行时执行常规的JIT编译,而是执行AOT编译,可以使用C ++后端编译器(或使用LLILC的 LLVM)对代码进行更好的优化)。当你这样做时,你的目标是一个特定的平台,比如“Linux 64位”。好处是启动时间更短,内存需求更小,希望能够提供更好的运行时性能,并且只发布一个二进制文件(您不需要在目标机器上安装.NET Framework)。然而,权衡是可移植到其他平台的 - 你将在Linux,MacOS,Windows,32位,64位等方面拥有单独的二进制文件。目前它仅适用于Windows应用商店的应用程序,但正在做更多的工作,将在普通的.NET应用程序上工作,包括ASP.NET应用程序。目前不会被定为.NET Core 1.0版本的一部分。

ASP.NET核心 - 在.NET Core或Full Framework上进行Web开发的新方法。它包含一个可定制的HTTP管道,Kestrel Web服务器,以及比以前的ASP.NET 4.x版本更好的性能配置文件。跨整个框架和Core框架跨平台兼容。它不包括WebForms或SignalR支持(还有)。它不与ASP.NET 4向后兼容,但如果你现在使用MVC / WebAPI,那么MVC / WebAPI的前进应该相当接近,因为只有一个Controller类。如果你想使用WebForms,那么你别无选择,只能坚持完整的4.6框架。

实体框架核心 - ORM开发的新框架。一旦被称为EF7,它就是跨平台的ORM框架,既适用于完整的4.6堆栈,也适用于新的Core堆栈。它不与EF6向后兼容。它仅支持代码优先模型。未来可能会有工具来帮助升级现有的EF6 .edmx文件以生成代码优先的EFCore实现类。

扫码关注云+社区