ASP.NET Core(.NET Core)和ASP.NET Core(.NET Framework)之间的区别


78

ASP.NET Core Web(.NET Core)与ASP.NET Core Web(.NET Framework)有什么区别?

.NET Framework是否提供.NET Core类似的性能


在工作时,我无法访问指向防火墙策略的链接。但是不同之处在于.NET Core是跨平台兼容的,并且不使用.NET Framework。.NET Framework项目显然使用.NET Framework,因此必须在服务器上安装该框架。
克林特·B

Answers:


96

刚开始时可能会造成混淆,但是请记住重要的一点:最终,“ ASP.NET Core”只是一堆可以安装在项目中的NuGet软件包。

.NET Core上的ASP.NET Core是跨平台的ASP.NET Core。它可以在Windows,Mac和Linux(包括Docker)上运行。服务器不需要安装.NET Core-依赖项可以与应用程序捆绑在一起。

.NET Framework上的ASP.NET Core是“完整”或“桌面” .NET Framework(例如.NET Framework 4.6.2)上的ASP.NET Core。这些应用程序只能在Windows上运行,但是有关ASP.NET Core的所有其他行为都具有相同的方式。

根据您链接的基准,尽管.NET Core当前是最高的,但两者都将具有比ASP.NET 4.6更高的性能:


ASP.NET 4.6:<50k请求/秒

ASP.NET Core(CLR):40万个请求/秒

ASP.NET Core(.NET Core,Linux):900k req / sec

ASP.NET Core(.NET Core,Windows):> 1.1m req / sec

但是,这些基准稍早一些(2016年2月),反映了RTM之前的代码。从那时起,如果它们有所改进,我就不会感到惊讶。


5
可以建立两个基础框架的目的是什么?与asp.net Core一起使用时,您还必须选择.net core或完整的.net框架。目标是.net核心尚不具备构建Web应用程序所需的全部功能,因此需要完整的.net框架
Justin Homes 2016年

5
@JustinHomes应用程序和程序包需要移植到.NET Core,有时这很难,具体取决于它们使用的API。该选项存在,因此您现在可以在“完整” .NET上使用ASP.NET Core,如果将来需要跨平台功能,则可以在将来移植到.NET Core。
Nate Barbettini

3
@NateBarbettini已经提出了一个问题。stackoverflow.com/q/38237576/2056869
JBA

2
@NateBarbettini如果使用.NET Framework(CLR)上的ASP.NET Core,是否所有的nuget包都可以使用,还是由于ASP.NET Core而引起的兼容性问题?
乔纳斯(Jonas)

2
@JonasAxelsson是,如果程序包支持CLR(即netstandard1.1更高net451或更高)。
Nate Barbettini

12

带有.NetCore的ASP.NET Core是一个跨平台(可以在Windows,Linux或其他平台上运行),高性能开源框架,用于构建现代的,基于云的,Internet连接的应用程序。它具有在IIS,Nginx,Apache,Docker上托管或在您自己的进程中自托管的能力。

ASP.NET Core完全作为NuGet软件包提供。这使您可以优化应用程序,使其仅包含必要的NuGet程序包。实际上,面向.NET Core的ASP.NET Core 2.x应用程序仅需要单个NuGet程序包。较小的应用程序表面积的好处包括更严格的安全性,减少的服务和改进的性能。

不需要安装.Net框架即可与.net核心应用程序一起运行asp.net核心。具有.net core的ASP.NET Core应用程序是一个控制台应用程序,可通过其Main方法创建Web服务器。它使用Kestrel Web服务器运行该应用程序。

我们还可以使用Visual Studio Code,Atom等编辑器来运行该应用程序。

它不像现在一样支持Aspx,WPF,WCF和WebServices。它支持内置的依赖注入。使用coreclr,它是.net核心在asp.net核心中的运行时。

另一方面,带有.Net框架的Asp.Core .Net框架早在2005年之前就开始使用,并且不断增加新功能,使其变得更加复杂和笨重。它不是跨平台的。它支持Aspx,WPF,WCF和WebServices

.Net Framework执行计划 在此处输入图片说明

.Net核心执行计划 在此处输入图片说明


3

使用.NET Core的ASP.NET CORE CORE-所有依赖项都是自包含的,可以使用大多数nuget包,不能使用Windows特定的包,可以在Windows,Linux,Mac上执行

使用.NET Framework的ASP.NET CORE-大多数依赖项都是自包含的,仅在Windows上执行,将有权访问Windows特定的nuget程序包,需要在计算机上安装有针对性的.net Framework版本


这是另一个答案的副本
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.