我在几乎所有未来的.NET框架讨论中都会看到以下内容:
所有这些之间有什么区别?
我如何知道何时使用合适的?
答案 0 :(得分:70)
在浏览了各种链接和视频后,我发现了一个有趣的图片:
从上面我们可以很容易地推断出以下内容:
一个有趣的观点是ASP.NET:
答案 1 :(得分:49)
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 Framework中的所有内容。但是,它旨在在Windows,Mac或Linux上运行跨平台。但确实会丢失一些功能,例如WCF,WPF。但是你仍然拥有ASP.NET Core(没有WebForms),但还没有SignalR。 SignalR支持旨在提供更高版本。这使用dotnet CLI(命令行界面)来编译应用程序,或者如果您在Windows上,则可以使用Visual Studio。
.NET Native - .NET Core框架的本机编译。而不是在.exe的运行时进行正常的JIT编译,这将执行AOT compilation,可以对代码using the C++ backend compiler(或使用LLILC的LLVM)进行更好的优化。执行此操作时,您将瞄准特定平台,例如" Linux 64位"。好处是启动时间更短,内存需求可能更小,希望更好的运行时性能,并且只发出一个单独的二进制文件(您不需要在目标计算机上安装.NET Framework)。然而,权衡是对其他平台的可移植性 - 您将拥有适用于Linux,MacOS,Windows,32位,64位等的单独二进制文件。这目前仅适用于Windows应用商店应用,但更多工作正在进行中它将适用于普通的.NET应用程序,包括ASP.NET应用程序。目前还没有成为.NET Core 1.0版本的一部分。
ASP.NET Core - 在.NET Core或Full Framework上进行Web开发的新方法。它包括一个可自定义的HTTP管道,Kestrel Web服务器和better performance配置文件,而不是之前的ASP.NET 4.x版本。这在整个框架和Core框架上都是跨平台兼容的。它不包括WebForms或SignalR支持(yet)。它不向后兼容ASP.NET 4,尽管如果你现在使用MVC / WebAPI,那么MVC / WebAPI前进应该相当接近,因为只有一个Controller
类。如果您想要使用WebForms,那么您别无选择,只能坚持使用完整的4.6 Framework。
实体框架核心 - ORM开发的新框架。一旦被称为EF7,它就是跨平台的ORM框架,既适用于完整的4.6堆栈,也适用于新的Core堆栈。它不向后兼容EF6。它只支持代码优先模型。将来可能有工具可帮助升级现有的EF6 .edmx文件,以生成代码优先EFCore实现的类。