.NET Core与ASP.NET Core的区别

297

.NET Core和ASP.NET Core之间究竟有什么区别?

它们是否互斥?我听说ASP.NET Core是建立在.NET Core上的,但它也可以建立在完整的.NET框架上。

那么ASP.NET Core到底是什么?


5个回答

311

2020年更新: 请注意,ASP.NET Core 3及以上版本现在依赖于.NET Core,并且不能再在.NET Framework上使用。以下描述适用于ASP.NET Core 1.x-2.x;尽管在ASP.NET Core 3.0中层分离仍然成立,但ASP.NET Core层不能再在3.0+的.NET Framework之上使用。

.NET Core是一款运行时。它可以执行为其构建的应用程序。

ASP.NET Core是一组库,形成了一个用于构建Web应用程序的框架。 ASP.NET Core库可用于.NET Core和“完整的.NET Framework”(已经随Windows一起出货多年)。

混淆的地方在于,使用ASP.NET Core的库和工具构建的应用程序通常被称为“ASP.NET Core应用程序”,这理论上并不表示它是为.NET Core还是.NET Framework构建的。因此,“ASP.NET Core应用程序”也是“.NET Core应用程序”或“.NET Framework应用程序”。

此图显示所涉及技术的关系(摘自此博客文章) .NET Web Application Technologies

在这里,您可以看到ASP.NET Core是建立在.NET Framework和.NET Core之上的,而“ASP.NET”(现在通常称为“经典ASP.NET”)仅限于.NET Framework。


39
那么我们该怎么称呼经典 ASP 呢?“古老 ASP”?:p - Dan Schnau
7
@DanSchnau,我们有“经典ASP”、“ASP.NET”(也称为“经典ASP.NET”)和“ASP.NET Core”,所以根本没有冲突 :) - Muhammad Gouda
取决于你对“云”是什么意思。例如,Azure AppService可以托管10年前构建的经典.NET Framework Web应用程序。创建基于Linux的Docker镜像以在云托管的Kubernetes中使用将需要.NET Core。 - Martin Ullrich
我有一个针对net462的.net core 2.x应用程序。我尝试在没有安装ASP Net core runtime的情况下运行它,但似乎不起作用。 这里是一些细节根据您在答案中描述的内容,我应该能够在服务器上仅使用.NET框架4.x运行ASP Net Core应用程序。我错过了什么吗?您能否提供一些微软文档的链接,说明ASP .Net Core应用程序可以在ASP .net core runtime或.net framework上运行? - Yadu
“_built on top of_”同时基于.NET Framework和.NET Core是什么意思?这意味着它可以在两者之间运行而不需要交叉依赖(这将意味着两个版本的ASP.NET Core,每个版本都针对不同的框架),还是它确实是在两者之上“构建”的,并且需要来自每个框架的依赖项?我相当确定是前者,但无法从这个答案或图表中绝对确定。注意:如果正确的话,此答案几乎可以澄清这一点。 - ruffin
显示剩余2条评论

70

使用 .NET Core 的 ASP.NET Core - 所有依赖项都是自包含的,可以使用大多数 NuGet 包,无法使用特定于 Windows 的包,可在 Windows、Linux 和 Mac 上执行。

使用 .NET Framework 的 ASP.NET Core - 大多数依赖项都是自包含的,仅能在 Windows 上执行,并且可以访问特定于 Windows 的 NuGet 包,需要在机器上安装目标 .NET Framework 版本。


95
这些东西是谁起的名字?这太令人困惑了。 - Nick
7
@Nick:微软的市场营销。他们在这方面有着悠久的历史。他们还没有发现网络 - 使用产品的普通名词(在搜索引擎世界中,使用更具体、不太常见的词语更好,最好是不在字典中的独特词语)。 Translated: @Nick: 微软的营销手段一直以来都存在这个问题。他们尚未意识到网络时代的变化——即在搜索引擎优化时,使用常用名词作为产品名称并不利于优化效果。更好的选择是使用更加具体、罕见的词汇,最好是不在字典中的独特词汇。 - Peter Mortensen
4
略有过时,但与之相关:注意.NET 5.0是.NET Core 3.1的后续版本,而不是.NET Framework 4.0,“以避免混淆”[https://learn.microsoft.com/en-us/dotnet/core/dotnet-five]。 - Beltway

46

ASP.NET Core是.NET Core支持的一种工作负载之一。

来自.NET Core指南:

.NET Core本身包括一个应用程序模型--控制台应用程序--它对于工具、本地服务和文本游戏非常有用。在.NET Core基础上构建了其他应用程序模型来扩展其功能,例如:

  • ASP.NET Core
  • Windows 10通用Windows平台(UWP)
  • Xamarin.Forms

5
这对我来说是更相关的答案。.Net Core适用于控制台应用程序,ASP.Net Core适用于Web应用程序。 - Shawn Zhang

17

.NET Core是.NET Framework的下一代演进版本,它使得微软技术可以在其他操作系统平台上运行,而不仅仅局限于Windows。

ASP.NET是由微软提供的Web框架,用于构建:

  • 服务器端渲染的网页/网站
  • 单页应用程序的服务器端组件
  • MVC风格的应用程序
  • Web服务/Web API/微服务

ASP.NET只能在Windows平台上运行。

由于.NET Core被创建出来是为了在Linux/macOS上运行微软技术,因此ASP.NET Core是ASP.NET向支持多平台发展的演进。

总之:

ASP.NET Core可以在多个操作系统平台上运行:Windows、Linux和macOS,并且可以运行在.NET Core和.NET 5.0之上。

ASP.NET 4.x(ASP.NET/ASP.NET MVC)只能在Windows操作系统上运行,且只能在.NET Framework上运行。

enter image description here


16

.NET Framework 已经发布了最后一个版本,4.8 后将不再有新的版本。微软将继续开发和推广 .NET Core,从现在开始您应该更倾向于使用 .NET Core 来进行项目开发。

官方更新(来源):

.NET 5 是 .NET Core 3.1 之后的下一个主要版本。我们将这个新版本命名为 .NET 5 而不是 .NET Core 4,原因有二:

  • 我们跳过了版本号 4.x,以避免与 .NET Framework 4.x 引起混淆。
  • 我们将“Core”从名称中删除,强调这是未来 .NET 的主要实现。.NET 5 支持比 .NET Core 或 .NET Framework 更多类型的应用程序和平台。

ASP.NET Core 5.0 基于 .NET 5 进行开发,但仍保留“Core”名称,以避免与 ASP.NET MVC 5 混淆。同样,Entity Framework Core 5.0 保留“Core”名称,以避免与 Entity Framework 5 和 6 混淆。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接